2011-11-28 63 views
1

我有下面的代碼,我對都通過同一個賬戶託管三個站點使用:爲什麼不能正常使用簡單的PHP頭授權

$username = 'test'; 
$password = 'test'; 

If (!isset($_SERVER['PHP_AUTH_USER'])|| !isset($_SERVER ['PHP_AUTH_PW'])|| 
    ($_SERVER['PHP_AUTH_USER'] != $username) || ($_SERVER['PHP_AUTH_PW'] != $password)){ 

//send this if the user and pass arent correct 

header('HTTP/1.1 401 Unauthorized'); 
header('WWW-Authenticate: Basic Realm= "mysite"'); 
exit('<h2> Go away Creep!!</h2> you need a username and password to enter this kingdom!!'); 
} 

它的工作完全正常,直到我升級到較新的框幾天前。託管公司表示,一切都很好,服務器遷移也很順利,但這個腳本突然不起作用。我輸入適當的用戶並通過,對話框再次提示我爲用戶並通過。

什麼可能會改變,這將使這段代碼無法正常工作? htaccess中是否有某些東西可以影響它?服務器設置?新箱

PHP版本是5.2,但我可以升級到5.3

讚賞任何幫助。

+1

var_dump($ _ SERVER),所以你可以看到你實際傳遞了什麼。 –

+0

取決於SAPI。在CGI和FastCGI環境中,出於安全原因,PHP_AUTH_USER不會出現,Authorization:頭被壓縮。然後查看有關變通辦法的手動註釋。 – mario

回答

0

您是否檢查過phpinfo()調用的值?如果safe_mode設置爲on我認爲您不能訪問PHP_AUTH_*服務器變量。好消息是安全模式在PHP 5.4中消失了,所以如果你可以升級那些可能需要處理的東西。

+0

感謝您的建議...只是檢查,但安全模式設置爲關閉。 – absentx

+0

您是否在PHP_AUTH_ *變量中看到預期值? –

+0

在標題提示再次輸入之前無法轉儲或回顯它們。這是最好的方法是什麼?謝謝您的幫助。 – absentx