2012-02-19 18 views
0

用於authenticatin一個頁面的代碼的打擊改變來完成(這是整個頁面的片斷,但主要的想法是在這裏):PHP認證不能因爲託管

if (!isset($_SERVER['PHP_AUTH_USER'])) { 
     header("WWW-Authenticate: Basic realm=\"MX Administration\""); 
     header("HTTP/1.0 401 Unauthorized"); 
     exit; 
    } 
    else { 
     session_start(); 
     if($_SERVER['PHP_AUTH_USER'] == $login && md5($_SERVER['PHP_AUTH_PW']) == $password){ 

       if($_SESSION['adm'] == '' && empty($_POST)){ 
        header("Location: whmcs.php"); 
        exit; 
       } 
       elseif($_SESSION['adm'] == '' && !empty($_POST)){ 

        if( $_POST['login'] == $login_in && md5($_POST['password']) == $password_in){ 
         $_SESSION['adm']="OK"; 
        } 
        else{ 
         header("Location: whmcs.php?do=message"); 
         exit; 
        } 
       } 
       else{ 
        $_SESSION['adm']="OK"; 
       } 

     } 
     else{ 
      header("WWW-Authenticate: Basic realm=\"MX Administration\""); 
      header("HTTP/1.0 401 Unauthorized"); 
      echo ":)\n"; 
      exit; 
     } 
    } 

?> 

現在,當我已經轉移這個代碼到另一個服務器,它不認證,它總是要求輸入用戶名,密碼。我想這是因爲PHP版本,PHP配置。你認爲什麼可能是原因。 (我確信我正在編寫正確的用戶名和密碼。)

+0

查看日誌,查看可能發生的事情!? – Alex 2012-02-19 12:47:07

+0

我可以看到他們嗎? – Narek 2012-02-19 12:48:01

+0

檢查Apache的錯誤,就像這個'tail -f/var/log/apache2/error.log' – Alex 2012-02-19 15:21:15

回答

0

最可能的原因是用於運行PHP腳本的CGI API。
您必須將API更改爲mod_php或更改託管或將HTTP驗證更改爲會話

+0

大多數web服務器仍然允許您通過配置傳遞標頭。 – Evert 2012-02-19 12:59:29