这里有新鲜出炉的 PHP 教程,程序狗速度看过来!
PHP(外文名: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,入门门槛较低,易于学习,使用广泛,主要适用于 web 开发领域。PHP 的文件后缀名为 php。
这篇文章主要介绍了 PHP HTTP 认证实例详解的相关资料, 这里附有实现代码,及对认证的知识做一个详细的介绍说明,需要的朋友可以参考下
HP 来实现 HTTP 的强制认证是十分简单的, 只需简单的几行代码就可以实现, 下面我们来看一个例子, 然后结合这里例子我向大家详细介绍一下 PHP 实现 HTTP 认证。
- <?php
- if(!isset($_SERVER['PHP_AUTH_USER'])) {
- header('WWW-Authenticate: Basic realm="系统名称"');
- header('HTTP/1.0 401 Unauthorized');
- echo '未通过HTTP认证.';
- exit;
- }
- else {
- echo '认证通过.';
- echo '用户名: '.$_SERVER['PHP_AUTH_USER']."\n";
- echo '密码: '.$_SERVER['PHP_AUTH_PW']."\n";
- }
- ?>
1. 实现说明
怎么样, 看到上面的代码了吧, 就这么几行添加到你的程序页面上就可以实现了.
它是通过利用 header()函数向客户端浏览器发送"Authentication Required"信息, 强制其弹出一个用户名 / 密码输入窗口, 当用户输入用户名和密码后, 包含有 URL 的 PHP 脚本将会加上预定义变量 PHP_AUTH_USER, PHP_AUTH_PW 和 AUTH_TYPE 然后再次调用, 这三个变量分别表示用户名, 密码和认证类型 (从 PHP5.0.1 起开始支持"Basic"和"Digest"两种认证方式), 它们被保存在 $_SERVER(从 HP>>4.1.0 起有效) 或 $HTTP_SERVER_VARS(从 PHP3 起有效)数组中具体应用时, 我们可以把验证的几行代码写成函数, 只要判断到用户变量不存在或验证不正确就一直执行该函数并弹出窗口, 而且还可以设置错误登录几次就不允许该用户访问, 具体的使用大家使劲的发散思考吧.
2. 注意事项:
1. 这段代码必须放到程序的开始, 且在其开始执行之前不能有任何输出 (若有输出则需要使用输出缓冲函数才行).
2.PHP 的 HTTP 认证机制仅在 PHP 以 Apache 模块方式运行时才有效, 这个容易理解, 它本身是 HTTP 强制认证, 肯定是不适合于 CGI 版本, 不能在命令行下执行的.
3.header 发送标头代码时请小心. 为了对所有的客户端保证兼容性, 关键字 "Basic" 的第一个字母必须大写为 "B", 分界字符串必须用双引号引用 (不能是单引号); 在 HTTP/1.0 和 401 之间必须有且仅有一个空格.
4. 在上面列子中, 仅输出了用户名和密码, 而在实际系统中则可按照登录验证流程进行与数据库或其他方式进行判断和验证.
5. 从 PHP4.3.0 起, 为防止有人通过编写脚本来从页面上获取密码, 当外部认证对特定页面有效, 并且安全模式被开启时, PHP_AUTH 变量将不会被设置. 可以用 REMOTE_USER 来辨别外部认证的用户, 用 AuthType 指令来判断外部认证机制是否有效.
6. 要想让 HTTP 认证能够在 IIS 下工作, PHP 配置选项 cgi.rfc2616_headers 必须设置为 0(默认值).
来源: http://www.phperz.com/article/17/0804/341538.html