我最近開始學習HTML和PHP。如果有人能指出我正確的方向,我將不勝感激:我製作了一個基本的網頁,其中包含基本身份驗證(以便輸入)。當用戶點擊取消按鈕時,我希望瀏覽器做一些事情!它所做的只是保持在它所在的頁面上(在用戶嘗試訪問我的頁面之前)。我想我希望它顯示401錯誤。要做到這一點的唯一方法就是在後面插入文字:當用戶點擊'取消'時顯示未經授權的頁面(html/php)
header('www-authenticate: basic');
?
我試過在.htaccess文件重定向401錯誤,但它似乎從來沒有出現401錯誤(儘管服務器訪問日誌說,有一個401錯誤)。當我使用.htaccess重定向我的404錯誤時,它工作。
這是我已經得到了驗證碼:
<?php
$user = array('Michael' => 'Mike');
$pass = array('Michael' => 'fish');
$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');
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');
exit;
}
}
?>
而且,如果我做任何愚蠢的事在我的代碼,隨時指出來。
我想,既然我把401頭到服務器,並登錄到服務器收到它,它會一直顯示一些文本說,「錯誤401:未經授權訪問」或類似的規定。
謝謝。
謝謝您的回覆。它大多是有道理的。我很好奇,如果我在我的網頁中創建鏈接到另一個不存在的頁面或文件,它會返回未找到該頁面或未找到該文件。我沒有告訴它返回這個。爲什麼呢,如果找不到東西,它會告訴用戶;但是,如果用戶的身份驗證失敗,它不會告訴用戶? 再次感謝您的回覆。 – 2012-01-09 11:14:11
當您收到404錯誤頁面時,apache(或您正在使用的任何http web服務器)是設置404標題狀態並輸出錯誤頁面內容的頁面。您甚至可以通過編輯錯誤文檔的html或創建新的錯誤文檔並告訴apache(例如通過htaccess)將新腳本用作404內容頁面 – Lee 2012-01-09 11:30:07
來更改錯誤內容。也許我誤解了。它是通過一些默認的內置東西創建404錯誤頁面本身的Apache?人們會認爲它會在收到401狀態碼時做同樣的事情。 – 2012-01-09 12:17:23