使用PHP的HTTP头授权

时间:2011-05-28 18:04:24

标签: php header authorization

我正在尝试使用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永远不会被设定。

3 个答案:

答案 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>";
}

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