2011-11-28 7 views
1

나는 내가 모두 같은 계정을 통해 호스팅되는 3 개 사이트에서 사용하는 다음 코드는이 : 나는 새로운 상자 A를 업그레이드 할 때까지왜 간단한 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_modeon으로 설정하면 서버 변수 PHP_AUTH_*에 액세스 할 수 있다고 생각하지 않습니다. 좋은 소식은 안전 모드가 PHP 5.4에서 사라 졌으므로 업그레이드가 가능하면 상황을 처리 할 수 ​​있다는 것입니다.

+0

제안에 감사드립니다 ... 방금 확인했지만 안전 모드가 꺼짐으로 설정되었습니다. – absentx

+0

PHP_AUTH_ * 변수에 예상 값이 표시됩니까? –

+0

헤더를 다시 입력하라는 메시지가 표시되기 전에이를 덤프하거나 에코하는 데 문제가 있습니다. 이것에 가장 좋은 방법은 무엇입니까? 도와 주셔서 감사합니다. – absentx

관련 문제