2012-02-24 37 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