Http认证不工作在linux托管网站



我有一个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不为您处理授权头,那么您可以非常简单地处理。

最新更新