我有一个linux托管的网站,我试图使用以下代码进行http身份验证以访问一个机密页面,但它似乎不起作用,每次我输入用户名和密码,身份验证框再次弹出!谁能告诉我我哪里错了?
<?php
// User name and password for authentication
$username='username';
$password='password';
if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) ||
($_SERVER['PHP_AUTH_USER'] !=$username) || ($_SERVER['PHP_AUTH_PW'] !=$password))
{
// The user name/password are incorrect so send the authentication headers
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm="My Web Page:The Freedom Square Of Internet"');
exit('<h2>My Web page</h2>Sorry, you must enter a valid user name and password to access this page.');
}
?>
很有可能您的服务器'吃' '授权'头,吐出$_SERVER
的内容可以帮助您更好地了解正在发生的事情。您使用的是什么服务器?
如果你正在使用fastcgi,这是Apache的mod_rewrite
解决方案,上面是你的问题:http://search.cpan.org/mramberg/催化剂-运行- 5.80012/lib/催化剂/发动机/FastCGI.pm # Authorization_header_with_mod_fastcgi_or_mod_cgi
RewriteCond %{HTTP:Authorization} ^(.+)
RewriteRule ^(.*)$ $1 [E=HTTP_AUTHORIZATION:%1,PT]
如果PHP不为您处理授权头,那么您可以非常简单地处理。