2013-05-27 61 views
0

我對php編碼有點新。我正試圖通過一本涵蓋HTTP認證主題的書中的章節。HTTP在本地文件系統上進行身份驗證

但是,當我在我的本地主機WAMP服務器上運行此代碼時,該框只是不斷彈出,即使我已經正確填寫表單。

<?php 
$username = 'admin'; 
$password = 'letmein'; 

if (isset($_SERVER['PHP_AUTH_USER']) && 
    isset($_SERVER['PHP_AUTH_PW'])) 
{ 
    if ($_SERVER['PHP_AUTH_USER'] == $username && 
     $_SERVER['PHP_AUTH_PW'] == $password) 
     echo "You are now logged in"; 
    else die("Invalid username/password combination"); 
} 
else 
{ 
    header('WWW-Authenticate: Basic realm="Restricted Section'); 
    header('HTTP/1.0 401 Unauthorized'); 
    die ("Please enter your username and password"); 
} 
?> 

那麼我該怎麼做讓瀏覽器接受我的答案?

有書中的暗示:

在現代瀏覽器的安全性也越來越嚴格,已經達到了 地步,你可能不能夠輕鬆地測試HTTP認證上 一個本地文件系統,除非你改變你的瀏覽器的設置。這是 保護您免受可能從 互聯網下載的潛在惡意文件(因爲本地文件通常會帶來更大的安全風險)。如果您希望編寫使用這種類型的身份驗證的代碼,則可以使用 ,這是一個 實例,您可能希望使用Internet連接在遠程的 服務器上執行測試。

那麼如何測試我的PHP腳本在遠程服務器上?或者我可以改變自己的設置以允許我使用此功能?

回答

0

該陳述是無稽之談;只要您使用網絡服務器和URL(如http://localhost/...而非file:///...)訪問該文件,則沒有顯着差異。您不需要「遠程」服務器來編寫代碼。

在這種情況下,問題很可能是網絡服務器認爲負責處理身份驗證,您的PHP腳本根本不涉及。您可以通過更改realm值並確認它在瀏覽器彈出窗口中是否有效。

否則,var_dump($_SERVER)確認您收到的值。

+0

當我回應'var_dump($ _ SERVER)'時,我得到了很多信息。 其中一個信息是當我使用Realm'Restricted Section'時,該信息是這樣的: 「HTTP_CACHE_CONTROL」] => string(9)「max-age = 0」 我該如何改變我的境界至? –

相關問題