我正在尝试使用PHP将HTTP身份验证添加到我的管理页面。我逐字地复制了许多不同的例子,没有一个正在运作。有没有人知道你是否需要在服务器端做某些事情,或者这些代码是否适用于较新版本的PHP?请帮忙!
这是我的测试'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
永远不会被设定。
答案 0 :(得分:1)
如果你的PHP工作为CGI / FastCGI,那么你将没有运气。尝试以非cgi模式切换它。
答案 1 :(得分:1)
对于遇到此问题的其他人,您可以在.htaccess中添加重写规则。
RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
HTTP Basic / Digest身份验证将对Godaddy进行此更改。
答案 2 :(得分:0)
您需要了解他们是否将其传递给PHP,以及哪个Server变量中包含您的用户名。
创建一个小的PHP测试页面,将下面的代码放入其中,然后将其上传到受.htaccess保护的目录,即它要求用户/ pw的位置。
此代码将显示所有服务器变量,您可以看到其中包含您的用户名,然后使用该变量:
foreach($_SERVER as $key_name => $key_value) {
print $key_name . " = " . $key_value . "<br>";
}
我不认为它会传递密码,只是用户。而且你不想通过网站回复密码。