使用PHP3进行HTTP认证_PHP
在一个页面中强迫用户进行身份认证的代码段的例子如下:
Example 2-1. HTTP 认证举例:
if(!isset($PHP_AUTH_USER)) {
Header("WWW-Authenticate: Basic realm=\"My Realm\"");
Header("HTTP/1.0 401 Unauthorized");
echo "Text to send if user hits Cancel button\n";
exit;
}
else {
echo "Hello $PHP_AUTH_USER.
";
echo "You entered $PHP_AUTH_PW as your password.
";
}
?>
除了简单的输出$PHP_AUTH_USER 和 $PHP_AUTH_PW变量的值以外,你还可以检查用户名和密码的合法性,也许是对数据库进行查询,也许是在dbm文件中搜索用户。
当心臭虫成堆的Internet Explorer浏览器,他对Hearders的顺序非常挑剔.所以采用在送出HTTP/1.0 401 header 请求之前送出WWW-Authenticate header请求是一个很好的解决方法。
为了阻止一些人写一些脚本来显示一个经过传统外部机制验证过的页面的密码,采用如下方式:如果这一页面使用外部验证机制,将不会生成PHP_AUTH变量.这样,$REMOTE_USER变量可以被用来表示已经被外部机制验证的用户.
注意,上面的方法并不能防止某些人在同一台服务器上利用无身份验证的URL偷取有身份鉴别的URL的密码。
无论Netscape还是IE,在接到服务器的401回复之后,都将清空本地浏览器窗口的身份验证缓存。这种做法可以有效的使用户登录退出,从而强迫他们再次输入他们的用户名和密码。一些人使用这个方式来实现“超时”注册,或者提供登录退出的按钮。
这种方法不是标准的HTTP基本身份鉴定所必须的,所以您可能从来都不依靠它。使用Lynx进行的测试并没有弄清楚401服务器回应的身份鉴定,所以如果使用“向前”或“向后”功能将打开源文件(只要信用需求还没有被改变)。
虽然已经指出这种语言不能工作在Microsoft的IIS服务器上,但是PHP语言CGI版本将受到IIS的限制。
推荐阅读
-
使用PHP3进行HTTP认证_PHP
-
PHP Yii框架中使用git进行版本控制的一下知识
-
Windows2000 + Apache + MySql + PHP3 + PHP4 + PERL安装使用小结(转)_PHP
-
php+mysqli使用预处理技术进行数据库查询的方法_php技巧
-
使用Python的Treq on Twisted来进行HTTP压力测试
-
PHP使用DES进行加密与解密的方法
-
为什么无法使用php中mysqli的准备语句进行数据库中数据的查询(绑定参数或者绑定结果),项目急用!该如何处理
-
PHP中Header使用的HTTP协议及常用方法小结
-
使用 PHP 的 tidy_clean_repair() 对 HTML 内容进行清理和格式化
-
php中使用ajax进行登陆验证后,页面出错的有关问题