使用PHP的HTTP标头授权


HTTP header authorization using PHP

我正在尝试使用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从未被设置。

如果你的PHP是CGI/FastCGI,那么你就没有运气了。尝试在非cgi模式下切换。

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

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

HTTP基本/摘要式身份验证将在Godaddy上进行此更改。

您需要了解他们是否将其传递给PHP,以及哪个服务器变量中包含您的用户名。

制作一个小的PHP测试页面,将下面的代码放在其中,并将其上传到受.htaccess保护的目录,即请求用户/pw的目录。

这段代码将显示所有服务器变量,您可以看到哪个变量中有您的用户名,然后使用该变量:

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

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