CGI 환경 변수는 내장변수라 하며, 다음의 목록을 확인할 수 있습니다.

 변 수 명  설 명
HTTP_ACCEPT 접속자 브라우저가 처리할 수 있는 MIME 타입목록
HTTP_ACCEPT_LANGUAGE 접속자 브라우저 언어
HTTP_USER_AGENT 접속자 브라우저 종류
HTTP_HOST 웹서버 호스트이름, 도메인이 없으면 ip주소를 사용
SERVER_SOFTWARE 웹서버 종류
SERVER_NAME 웹서버 호스트이름, 도메인이 없으면 ip주소를 사용
SERVER_ADDR 웹서버 ip주소
SERVER_PORT 웹서버가 제공하는 포트번호, http일 경우 일반적으로 80
REMOTE_ADDR 접속자 ip 주소
DOCUMENT_ROOT 로컬파일 파일시스템 경로
SCRIPT_FILENAME php 실행파일 경로
SERVER_PROTOCOL 웹서버가 사용중인 이름과 HTTP버전
REQUEST_METHOD HTTP 페이지전송 방식 (GET 또는 POST)
QUERY_STRING 요청 URL의 ? 오른쪽 부분
REQUEST_URI 요청 URL에서 호스트이름이나 포트를 제외한 URL
SCRIPT_NAME 접속자가 보고 있는 페이지의 경로와 파일이름
PHP_SELF 접속자가 보고 있는 페이지의 경로와 파일이름
REQUEST_TIME 로컬시간(timestamp)을 출력, time()함수와 같은 역할을 하며, php5.1부터 지원합니다.
HTTP_REFERER
현제 페이지로 오기 전의 이전 페이지주소

HTTP_HOST와 SERVER_NAME의 차이를 말하자면, SERVER_NAME은 Apache의 ServerName을 말하며, HTTP_HOST는 Apache인 VirtualHost 에서 설정한 ServerName를 말하는데, 한 서버에 수 개의 호스트이름이 있다면 2개의 값이 달라진다는 점에 있습니다.

다음에서 http://127.0.0.1/mydir/test.php?arg=1&var=2로 접속했을 때의 결과를 확인할 수 있습니다.

 변 수 명  설 명
HTTP_ACCEPT image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
HTTP_ACCEPT_LANGUAGE ko
HTTP_USER_AGENT Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2)
HTTP_HOST 127.0.0.1
SERVER_SOFTWARE Apache
SERVER_NAME 127.0.0.1
SERVER_ADDR 127.0.0.1
SERVER_PORT 80
REMOTE_ADDR 127.0.0.1
DOCUMENT_ROOT C:/Server/public_html
SCRIPT_FILENAME C:/Server/public_html/mydir/test.php
SERVER_PROTOCOL HTTP/1.1
REQUEST_METHOD GET
QUERY_STRING arg=1&var=2
REQUEST_URI /mydir/test.php?arg=1&var=2
SCRIPT_NAME /mydir/test.php
PHP_SELF /mydir/test.php
REQUEST_TIME 1302443725
HTTP_REFERER  

HTTP_로 시작하는 변수는 헤더변수로서 브라우저의 요청에 의해 만들어지며, 접속자의 컴퓨터 환경적 정보가 담겨집니다. 이를 통해 접속자 브라우저 종류나 언어, ip주소, 접속경로로 다양한 방문자접속 통계프로그램을 만들 수 있는 것입니다.

 <?php
 
if("ko" == strtolower(getenv('HTTP_ACCEPT_LANGUAGE'
))) {
       echo 
"접속하신 브라우저가 한글입니다."
;
 }
 
?>

변수이름이나 변수이름 앞에 붙는 $_SERVER$HTTP_SERVER_VARS는 대문자로 표시해야 하며, php.ini 설정부분인 register_globalsoff라면 변수이름만으로는 사용할 수 없습니다.

 <?php
 
echo getenv('HTTP_HOST'
);

 echo 
$_SERVER['HTTP_HOST'
];

 echo 
$HTTP_SERVER_VARS['HTTP_HOST'
];

 echo 
$HTTP_HOST
//  register_globals가 off이면 사용 불가

 // 결과: 127.0.0.1
 
?>

보안에 어느 정도 유효성을 갖고 있다면 register_globalsOff로 해두는 게 좋으며, $_SERVERgetenv함수를 이용해 변수지정하도록 합니다.

기타 환경변수로는 HTTP_COOKIE, PATH, WINDIR, PATHEXT, COMSPEC, SystemRoot, argv, argc, SERVER_ADMIN, SERVER_SIGNATURE, HTTP_CONNECTION, HTTP_ACCEPT_ENCODING 등이 있지만 큰 비중이 없어서 생략합니다.

관련글: 2011/06/10 - [phP 들어가기/phP입문/변수 기초] - 자동전역변수 #2
           2011/05/31 - [phP 들어가기/phP입문/변수 기초] - 외부변수의 이해
           2011/04/16 - [phP 들어가기/phP입문/변수 기초] - 전역 변수 $GLOBALS
블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요