코드/PHP

PHP HTTP 인증

Yeah-Panda 2015. 4. 17. 14:41
$author_name = 'name';
$author_pwd = 'password';

if(!isset($_SERVER['PHP_AUTH_USER'] || !isset($_SERVER['PHP_AUTH_PW']) || ($_SERVER['PHP_AUTH_USER']!=$author_name || 
$_SERVER['PHP_AUTH_PW']!=$author_pwd ) )
{
    header('HTTP/1.1 401 Unauthorized');
    header('WWW-Authenticate: Basic realm="Guitar Game"');
    exit('

Guitar Game

Sorry, You Must input admin name and password

'); }


exit() 코드는 두개의 header() 코드 바로 아래에 위치하지만 exit() 가 수행되는 시점은 사용자가 인증창의 취소(cancel) 버튼을 클릭해 인증 작업을 종료한 시점뿐이다.
그리고 , 사용자 인증에 실패하면 서버는 인증시도 전에 사용했던 header() 함수는 무시하고 다시 한번 새로운 헤더를 전송한다.
이 작업은 사용자 인증에 성공할 때까지 반복된다. exit() 는 ‘취소’ 버튼을 통해 사용자가 인증작업을 강제로 취소할 때만 실해오디어 실제 페이지 내용을 출력하지 않고, 미리 설정된 인증거부 메시지를 출력한다.
exit() 는 사용자 이름과 패스워드 정보가 정확하지 않을경우를 제어하는 if 문 안에 있으므로 인증에 성공한 상황이라면 exit() 는 수행되지 않고 인증거부 메시지 역시 출력되지 않는다.
header() 에 들어가는 문자열들은 띄어쓰기 하나라도 다르면 오류를 발생시킨다.
아예 똑같이 쳐야한다.