【发布时间】:2011-05-08 05:19:54
【问题描述】:
我正在尝试使用 Basic HTTP Authentication 并按照 PHP 手册页上的示例进行操作。但这对我不起作用。变量$_SERVER['PHP_AUTH_USER'] 似乎没有设置。当用户尝试登录时,系统会提示用户使用新的登录对话框。服务器正在运行 PHP 5.3.3,我已经尝试使用 Google Chrome 和 Internet Explorer。
这是我使用的简单示例:
<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="Jonas Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'User pressed Cancel';
exit;
} else {
echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as you password.</p>";
}
?>
怎么了?如何在 PHP 中使用基本 HTTP 身份验证?
【问题讨论】:
-
与其尝试用 PHP 做这件事,不如使用 Web 服务器,例如httpd.apache.org/docs/2.2/howto/auth.html
-
@James:我认为我的虚拟主机使用 Apache。
-
@Phil:那么我的 PHP 代码将依赖于我的 Web 服务器,并且我无法轻松更改为另一个 Web 服务器。我想遵循 HTTP 标准。
-
Unauthorized 首先是拼写错误。您的示例比您引用的链接短。
-
您是否阅读了您关注的链接上的 cmets?有针对不同 Web 服务器和程序的多个版本的建议,其中之一可能更适合您的需求。对于 PHP,我发现手册 cmets 比手册中的描述更有用。
标签: php authentication http-authentication basic-authentication server-variables