2011-05-28 146 views
0

我试图使用PHP将HTTP身份验证添加到我的管理页面。我逐字地复制了一堆不同的例子,但都没有工作。有谁知道在服务器端是否需要做某些事情,或者如果此代码不适用于较新版本的PHP?请帮忙!使用PHP的HTTP标头授权

这是我的测试'authorize.php'文件。对于每个管理页面,我只使用require_once

<?php 
    if (!isset($_SERVER['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'; 
     exit; 
    } else { 
     echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>"; 
     echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>"; 
    } 
?> 

会发生什么是授权只是弹出一遍又一遍。 PHP_AUTH_USER从未设置。

回答

1

如果你的PHP作为CGI/FastCGI工作,那么你将没有运气。尝试在非cgi模式下切换它。

+0

任何想法,我怎么做?此外,做出这样的举动是否有缺点? – Craig 2011-05-28 18:50:27

+0

1.在你的控制面板中的某处。 2.编号 – gaRex 2011-05-28 18:59:47

+0

酷,修复它。非常感谢。 – Craig 2011-05-28 19:45:30

0

您需要确定它们是否将它传递给PHP,以及哪个Server变量中包含您的用户名。

创建一个小的PHP测试页面,将下面的代码放在里面,然后将其上传到受.htaccess保护的目录,即它要求用户/ pw的目录。

该代码会显示所有的服务器变量,你可以看看哪一个有它自己的用户名,然后使用该变量来代替:

foreach($_SERVER as $key_name => $key_value) { 
    print $key_name . " = " . $key_value . "<br>"; 
} 

我不认为它会通过密码不过,只是用户。而且你不想通过网站回应密码。

1

对于其他遇到此问题的人,可以在.htaccess中添加重写规则。

RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 

HTTP Basic/Digest身份验证将在Godaddy上进行此更改。