php身份验证显示文本错误凭据

时间:2012-02-24 01:09:03

标签: php authentication

我编写了以下php代码来执行基本身份验证。我想知道当用户点击确定按钮时我如何显示文本,并输入了错误的用户名或密码。我已经评论了我认为可以使其起作用的那条线,但没有。

$user = array('Bob' => 'bob');
$pass = array('Bob' => 'pass');
$userSuccess = false;
$passSuccess = false;

if(!isset($_SERVER['PHP_AUTH_USER']) && !isset($_SERVER['PHP_AUTH_PW']))
{
    header('http/1.1 401 Unauthorized');
    header('www-authenticate: basic');
    echo "<h2> HTTP Error 401: Unauthorized Access </h2>";
    exit;
}
else
{
    foreach($user as $value)
        if($_SERVER['PHP_AUTH_USER'] == $value)
            $userSuccess = true;
    foreach($pass as $value)
        if($_SERVER['PHP_AUTH_PW'] == $value)
            $passSuccess = true;

    if(!$userSuccess || !$passSuccess)
    {
        header('http/1.1 401 Unauthorized');
        header('www-authenticate: basic');
        echo "incorrect stuff";    // I don't get why this line doesn't make it work.
        exit;
    }
}

谢谢你的时间。

1 个答案:

答案 0 :(得分:1)

您需要自定义401页面。如何执行此操作取决于您的服务器。

例如,如果使用Apache,并假设它已配置为允许它,则可以使用ErrorDocument 401 /errors/401.html生成.htaccess文件。

根据需要设置/errors/401.html,这就是抛出401错误时应该显示的内容。

如果使用nginx,请参阅Nginx - Customizing 404 page,但您显然想要自定义401而不是404。