2012-02-24 44 views
0

我写了下面的php代码来执行基本身份验证。我想知道如何在用户单击确定按钮时显示文本,并输入了不正确的用户名或密码。我已经评论了我认为能够实现的路线,但没有。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; 
    } 
} 

感谢您的时间。

+0

是否显示什么?你有没有收到任何错误信息? – 2012-02-24 01:12:51

+0

你为什么认为它不起作用?有用。输入任何东西作为密码和/或登录三次,你会得到你'错误的东西' – Cheery 2012-02-24 02:23:53

+0

不适合我...我必须输入错误的东西(至少一次),然后按转义或单击取消它为显示“不正确的东西”。 – 2012-02-24 03:10:55

回答

1

您需要自定义401页面。你如何做到这一点取决于你的服务器。

例如,如果使用Apache,并假设它被配置为允许它,您可以使用ErrorDocument 401 /errors/401.html制作.htaccess文件。

使/errors/401.html然而,你想要的,这就是401错误时应该显示的。

如果使用nginx的,看到Nginx - Customizing 404 page,除非你显然要自定义的401,而不是404

+0

感谢您的建议。这样可行。你知道为什么我的代码不起作用吗?也许为什么另一个人说它适合他们? – 2012-02-24 07:38:00