php-Authentication总是失败

时间:2016-03-31 09:20:09

标签: php authentication

我正在尝试用php建立一个简单的身份验证:

<?php

if ($PHP_AUTH_USER != "a" or $PHP_AUTH_PW != "b"):

header('WWW-Authenticate: Basic realm="Protected Page: ' .
     'Enter your username and password for access."');
header("HTTP/1.0 401 Unauthorized");
?>
  <HTML>
    <HEAD><TITLE>Authorization Failed</TITLE></HEAD>
    <BODY><H1>Authorization Failed</H1></BODY>
  </HTML>
<?php else: ?>
  <HTML>
    <HEAD><TITLE>Authorization success</TITLE></HEAD>
    <BODY><H1>Authorization success</H1></BODY>
  </HTML>
<?php endif; ?>

出现用户名/密码对话框,但当我输入a和b作为用户名和密码时,对话框会关闭并再次弹出。

我正在运行apache2.4,配置是否有问题?我应该提供哪些附加信息?

1 个答案:

答案 0 :(得分:1)

问题在于您检查凭据的行:

if ($PHP_AUTH_USER != "a" or $PHP_AUTH_PW != "b"):

您要查找的值存储在$_SERVER超全局中。所以该行应为:

if ($_SERVER['PHP_AUTH_USER'] != "a" or $_SERVER['PHP_AUTH_PW'] != "b"):

我还应该提到做这样的身份验证不应该用于任何安全的事情,因为密码以纯文本形式存储,请查看此article以获取更多信息。