[PHP] .htaccess 없이 똑같은 형태의 인증 구현하기

서버상에서 일부에게만 허용된 공간을 구축할때 간단한 방법으로 .htaccess와 .htpasswd를 조합한 인증 시스템을 구축하고 하는데요, 이것 역시 번거롭고 .으로 시작하는 파일이 숨김 파일이라 먼 훗날 유지보수시에 신경 못쓰는 경우도 종종 생기는것 같습니다. 이부분을 단지 코드상에서 간단하게 구현하기 위해서는 다음과 같은 방법을 사용할 수 있습니다.

<?php

define('MASTER_USER_NAME', 'master');
define('MASTER_USER_PASS', 'password');

$userName = isset($_SERVER['PHP_AUTH_USER']) ? $_SERVER['PHP_AUTH_USER'] : '';
$userPass = isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : '';

if ($userName != MASTER_USER_NAME || $userPass != MASTER_USER_PASS) {
	header('WWW-Authenticate: Basic realm="My Realm"');
	header('HTTP/1.0 401 Unauthorized');
	exit;
}

echo "Hello World";

?>

로그인을 정상적으로 성공하면 Hello World가 출력되는것을 볼 수 있습니다. 원래 구현하려던 부분을 이 echo 부분에 작성하시면 됩니다. 브라우저를 통해 접근할 시 다음과 같은 인증창이 뜨게 됩니다.

스크린샷 2013-12-03 오후 4.03.02