2011-05-28 115 views
0

我試圖使用PHP將HTTP身份驗證添加到我的管理頁面。我逐字地複製了一堆不同的例子,但都沒有工作。有誰知道在服務器端是否需要做某些事情,或者如果此代碼不適用於較新版本的PHP?請幫忙!使用PHP的HTTP標頭授權

這是我的測試'authorize.php'文件。對於每個管理頁面,我只使用require_once

<?php 
    if (!isset($_SERVER['PHP_AUTH_USER'])) { 
     header('WWW-Authenticate: Basic realm="My Realm"'); 
     header('HTTP/1.0 401 Unauthorized'); 
     echo 'Text to send if user hits Cancel button'; 
     exit; 
    } else { 
     echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>"; 
     echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>"; 
    } 
?> 

會發生什麼是授權只是彈出一遍又一遍。 PHP_AUTH_USER從未設置。

回答

1

如果你的PHP作爲CGI/FastCGI工作,那麼你將沒有運氣。嘗試在非cgi模式下切換它。

+0

任何想法,我怎麼做?此外,做出這樣的舉動是否有缺點? – Craig 2011-05-28 18:50:27

+0

1.在你的控制面板中的某處。 2.編號 – gaRex 2011-05-28 18:59:47

+0

酷,修復它。非常感謝。 – Craig 2011-05-28 19:45:30

0

您需要確定它們是否將它傳遞給PHP,以及哪個Server變量中包含您的用戶名。

創建一個小的PHP測試頁面,將下面的代碼放在裏面,然後將其上傳到受.htaccess保護的目錄,即它要求用戶/ pw的目錄。

該代碼會顯示所有的服務器變量,你可以看看哪一個有它自己的用戶名,然後使用該變量來代替:

foreach($_SERVER as $key_name => $key_value) { 
    print $key_name . " = " . $key_value . "<br>"; 
} 

我不認爲它會通過密碼不過,只是用戶。而且你不想通過網站迴應密碼。

1

對於其他遇到此問題的人,可以在.htaccess中添加重寫規則。

RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 

HTTP Basic/Digest身份驗證將在Godaddy上進行此更改。