강의 컨설팅 트레이닝 무료진단 무료책자 마케팅편지 마케팅정보공유 다이어리 서비스제휴 고객센터

$_SERVER 변수의 모든것
작성자 : 13 김영철
등록날짜 : 2009.01.14 22:22
2,818

기선언 변수

PHP 4.1.0이후부터 외부 변수를 가져오는 가장 선호되는 방법은 아래에서 설명하는 슈퍼전역을 사용하는것이다. 그 이전버전에서는 register_globals이나 긴형태의 기선언 PHP 배열($HTTP_*_VARS)을 사용한다. PHP 5.0.0부터, 긴 형태의 PHP 예약 변수 배열을 register_long_arrays 지시어로 비활성화할 수 있습니다.

서버 변수: $_SERVER

참고: 4.1.0부터 지원됨. 이전 버전은 $HTTP_SERVER_VARS을 사용함

$_SERVER는 헤더, 경로, 스크립트 위치와 같은 정보를 포함하는 배열이다. 이 배열 안의 엔트리는 웹서버에 의해 생성된다. 모든 웹서버가 이런 것들을 제공한다는 보장은 없다. 서버는 어떤것은 빠뜨리거나 여기에서 목록화된 것 외의 것을 제공할수 도 있다. 이런 많은 수의 변수들은 CGI 1.1 specification에 기반하므로, 그런 변수들은 기대할수 있을것이다.

이 변수는 '슈퍼전역', 또는 자동 전역, 변수이다. 즉 스크립트내의 모든 유효영역안에서 사용가능하다는 의미를 갖는다. $HTTP_SERVER_VARS를 사용할때와 같이 함수나 메소드 안에서 사용하기 위해 global $_SERVER;를 할 필요는 없다.

$HTTP_SERVER_VARS는 동일한 초기 정보를 포함하지만, 자동전역은 아니다. ($HTTP_SERVER_VARS$_SERVER는 다른 변수이고 PHP는 그변수들을 따로 다루게 된다는 것에 주의한다)

register_globals 디렉티브가 설정되어있으면, 이 변수들은 스크립트의 전역 유효영역에서 사용이 가능해 진다. 즉 $_SERVER$HTTP_SERVER_VARS 배열과 분리된다. 관련정보는 전역 등록 사용하기라는 이름의 보안 챕터를 참고한다. 이들 각각의 전역은 자동전역이 아니다.

$_SERVER에서는 다음 구성요소를 확인할수도 있고 그렇지 않은수있다. 이 변수중 일부(심지어 모두)는 PHP가 커맨드 라인에서 수행되고 있을때에는 보여지지 않을것이다.

'PHP_SELF'

현재 실행중인 스크립트의 파일명이고, 도규먼트 루트에 상대적인 경로를 갖는다. 예를 들면, 주소 http://example.com/test.php/foo.bar의 스크립트에서 $_SERVER['PHP_SELF']/test.php/foo.bar이 될것이다.

PHP가 커맨드 라인 프로세서로 실행중이면, 이 변수는 나타나지 않는다.

'argv'

스크립트로 전달되는 인자의 배열. 스크립트가 커맨드 라인에서 실행중이면, 이 변수는 C-스타일의 커맨드 라인 인자로 제공된다. GET 메소드에 의해 호출될때에는 이 변수는 질의 문자열(query string)을 포함할것이다.

'argc'

스크립트로 전달되는 커맨드 라인 인자의 갯수 (커맨드 라인에서 실행중일때)

'GATEWAY_INTERFACE'

서버가 사용하는 CGI 사양(specification)의 버전: 예를 들면, 'CGI/1.1'.

'SERVER_NAME'

현재 스크립트가 수행되고 있는 서버 호스트의 이름. 스크립트가 가상 호스트에서 수행중이면, 이 변수는 그 가상 호스트를 위해 정의된 값이 될것이다.

'SERVER_SOFTWARE'

서버 식별 문자열. 요구(ruquest)에 응답할때 헤더안에서 보여준다.

'SERVER_PROTOCOL'

페이지가 요청되어진 정보 프로토콜의 이름과 버전: 예를 들면, 'HTTP/1.0';

'REQUEST_METHOD'

페이지에 접근할때 사용된 요청 메소드 종류. 예를 들면,'GET', 'HEAD', 'POST', 'PUT'.

'QUERY_STRING'

페이지가 접근될때의 질의 문자열

'DOCUMENT_ROOT'

현재 스크립트가 수행중인 다큐먼트 루트 디렉토리. 서버 설정 파일에서 정의된다.

'HTTP_ACCEPT'

현재 요청에 대한 Accept: 헤더의 내용.

'HTTP_ACCEPT_CHARSET'

현재 요청에 대한 Accept-Charset: 헤더의 내용. 예를 들면'iso-8859-1,*,utf-8'.

'HTTP_ACCEPT_ENCODING'

현재 요청에 대한 Accept-Encoding: 헤더의 내용. 예를 들면: 'gzip'.

'HTTP_ACCEPT_LANGUAGE'

현재 요청에 대한 Accept-Language: 헤더의 내용. 예를 들면: 'en'.

'HTTP_CONNECTION'

현재 요청에 대한 Connection: 헤더의 내용. 예를 들면: 'Keep-Alive'.

'HTTP_HOST'

현재 요청에 대한 Host: 헤더의 내용.

'HTTP_REFERER'

현재 페이지에 대한 유저 에이전트를 참조하는 페이지의 주소. 모든 에이전트가 이 값을 갖지 않는다. 일부 에이전트는 HTTP_REFERER를 각 특성에 맞게 변경하는 기능을 제공한다. 간단히 말해서, 이 값은 신뢰할수 없다.

'HTTP_USER_AGENT'

현재 요청에 대한 User-Agent: 헤더 내용. 이 값은 페이지에 접근 중인 유저 에이전트를 표시하는 문자열이다. 표준적인 예로는: Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). get_browser()로 이 값을 사용하여 유저 에이전트의 능력에 맞게 페이지의 출력을 조절할수 있다.

'REMOTE_ADDR'

현재 페이지를 보고있는 유저의 IP 주소.

'REMOTE_HOST'

현재 페이지를 보고있는 유저의 호스트명. 역방향 dns 검색이 유저의 REMOTE_ADDR를 위해 사용된다.

참고: 웹서버는 이 변수를 생성할수 있도록 설정되어야 한다. 예를 들면 아파치에서는 httpd.conf안에서 HostnameLookups On 이 필요할것이다. gethostbyaddr()도 참고.

'REMOTE_PORT'

웹서버와 통신중인 유저 머신이 사용중인 포트.

'SCRIPT_FILENAME'

현재 수행되는 스크립트의 절대 경로명.

참고: file.php, ../file.php처럼 스크립트를 상대 경로로 지정하여 CLI로 실행할 경우, $_SERVER['SCRIPT_FILENAME']은 사용자가 지정한 상대 경로를 포함합니다.

'SERVER_ADMIN'

웹서버 설정 파일안의 SERVER_ADMIN (아파치용) 디렉티브에 주어지는 값. 스크립트가 가상 호스트에서 수행중이면, 이 값은 그 가상호스트를 위해 정의되는 값이 될것이다.

'SERVER_PORT'

웹서버가 통신을 위해 사용중인 서버 머신의 포트. 초기 설정값으로 '80';이 될것이다. 예를 들어, SSL을 사용중이면, 안전한 HTTP 포트로 정의된 어떤 값으로도 변경할수 있다.

'SERVER_SIGNATURE'

활설화되어있다면, 서버가 생성하는 페이지에 추가되는 서버 버전과 가상 호스트명을 갖는 문자열.

'PATH_TRANSLATED'

현재 스크립트에 대한 파일시스템(다큐먼트 루트가 아님) 기반의 경로 서버가 virtual-to-real 매핑으로 설정되면 보인다.

'SCRIPT_NAME'

현재 스크립트의 경로를 갖는다. 이 값은 가리킬 필요가 있는 페이지에 유용하다.

'REQUEST_URI'

이 페이지에 접근하기 위해 주어지는 URI; 예를 들면,'/index.html'.

'PHP_AUTH_USER'

HTTP 인증을 사용하는 모듈로서 아파치에서 수행될때, 이 변수는 유저에 의해 제공되는 username으로 설정된다.

'PHP_AUTH_PW'

HTTP 인증을 사용하는 모듈로서 아파치에서 수행될때, 이 변수는 유저가 제공하는 password로 설정된다.

'AUTH_TYPE'

HTTP 인증을 사용하는 모듈로서 아파치에서 수행될때, 이 변수는 인증 타입으로 설정된다.

환경 변수: $_ENV

참고: 4.1.0부터 지원됨. 그 이전 버전에서는, $HTTP_ENV_VARS이 사용되었다.

이 변수들은 PHP 해석기가 실행중인 환경에서 PHP의 전역 네임스페이스로 포함된다. PHP가 실행중인 셀과 다른 종류의 셀을 수행하는 시스템에 의해서 많은 변수가 제공된다. 확정적인 변수 목록을 제공하는것은 불가능 하다. 선언된 환경변수 목록에 대한 셀의 문서를 참고하라.

다른 환경 변수는 CGI 변수를 포함한다. PHP가 서버 모듈로 실행중인지 또는 CGI 프로세서로 실행중인지에 따라 달라진다.

이변수는 '슈퍼전역', 도는 자동 전역, 변수이다. 이 말의 의미는 스크립트 내의 모든 영역에서 사용가능하다는 것이다. $HTTP_ENV_VARS를 사용할때와 마찬가지로, 함수나 메소드에서 이 변수에 접근하기 위해 global $_ENV;를 사용할 필요는 없다.

$HTTP_ENV_VARS는 동일한 초기치 정보를 갖는다. 그러나 자동전역이 아니다. (HTTP_ENV_VARS$_ENV는 다른 변수이며 PHP가 따로 다루게 된다는 것에 주의한다)

register_globals 디렉티브가 설정되어있으면, 이변수는 스크립트의 전역 유효영역에서 사용가능해진다. 즉,$_ENV$HTTP_ENV_VARS 배열에서 독립적으로 사용된다. 관련 정보는, 전역 등록 사용하기라는 보안 챕터를 참고한다. 이들 각각의 전역변수는 자동전역이 아니다.

HTTP 쿠키: $_COOKIE

참고: 4.1.0부터 지원됨. 이전 버전에서는 $HTTP_COOKIE_VARS를 사용했슴.

HTTP 쿠키를 통해 현재 스크립트로 전달되는 변수의 연관 배열. 어떤 영역에서는 자동으로 전역화된다.

이변수는 '슈퍼전역', 도는 자동 전역, 변수이다. 이 말의 의미는 스크립트 내의 모든 영역에서 사용가능하다는 것이다. $HTTP_COOKIE_VARS를 사용할때와 마찬가지로, 함수나 메소드에서 이 변수에 접근하기 위해 global $_COOKIE;를 사용할 필요는 없다.

$HTTP_COOKIE_VARS는 동일한 초기치 정보를 갖는다. 그러나 자동전역이 아니다. (HTTP_COOKIE_VARS$_COOKIE는 다른 변수이며 PHP가 따로 다루게 된다는 것에 주의한다)

register_globals 디렉티브가 설정되어있으면, 이변수는 스크립트의 전역 유효영역에서 사용가능해진다. 즉,$_COOKIE$HTTP_COOKIE_VARS 배열에서 독립적으로 사용된다. 관련 정보는, 전역 등록 사용하기라는 보안 챕터를 참고한다. 이들 각각의 전역변수는 자동전역이 아니다.

HTTP GET 변수: $_GET

참고: 4.1.0부터 지원됨. 이전 버전에서는 $HTTP_GET_VARS를 사용했슴.

HTTP GET 메소드를 통해 현재 스크립트에 전달되는 변수의 연관 배열. 어떤 영역에서는 자동으로 전역화된다.

이변수는 '슈퍼전역', 도는 자동 전역, 변수이다. 이 말의 의미는 스크립트 내의 모든 영역에서 사용가능하다는 것이다. $HTTP_GET_VARS를 사용할때와 마찬가지로, 함수나 메소드에서 이 변수에 접근하기 위해 global $_GET;를 사용할 필요는 없다.

$HTTP_GET_VARS는 동일한 초기치 정보를 갖는다. 그러나 자동전역이 아니다. (HTTP_GET_VARS$_GET는 다른 변수이며 PHP가 따로 다루게 된다는 것에 주의한다)

register_globals 디렉티브가 설정되어있으면, 이변수는 스크립트의 전역 유효영역에서 사용가능해진다. 즉,$_GET$HTTP_GET_VARS 배열에서 독립적으로 사용된다. 관련 정보는, 전역 등록 사용하기라는 보안 챕터를 참고한다. 이들 각각의 전역변수는 자동전역이 아니다.

HTTP POST 변수: $_POST

참고: 4.1.0부터 지원됨. 이전 버전에서는 $HTTP_POST_VARS를 사용했슴.

HTTP POST 메소드를 통해 현재 스크립트에 전달되는 변수의 연관 배열. 어떤 영역에서는 자동으로 전역화된다.

이변수는 '슈퍼전역', 도는 자동 전역, 변수이다. 이 말의 의미는 스크립트 내의 모든 영역에서 사용가능하다는 것이다. $HTTP_POST_VARS를 사용할때와 마찬가지로, 함수나 메소드에서 이 변수에 접근하기 위해 global $_POST;를 사용할 필요는 없다.

$HTTP_POST_VARS는 동일한 초기치 정보를 갖는다. 그러나 자동전역이 아니다. (HTTP_POST_VARS$_POST는 다른 변수이며 PHP가 따로 다루게 된다는 것에 주의한다)

register_globals 디렉티브가 설정되어있으면, 이변수는 스크립트의 전역 유효영역에서 사용가능해진다. 즉,$_POST$HTTP_POST_VARS 배열에서 독립적으로 사용된다. 관련 정보는, 전역 등록 사용하기라는 보안 챕터를 참고한다. 이들 각각의 전역변수는 자동전역이 아니다.

HTTP File 업로드 변수: $_FILES

참고: 4.1.0부터 지원됨. 이전 버전에서는 $HTTP_POST_FILES를 사용했슴.

HTTP POST 메소드를 통해 현재 스크립트에 업로드되는 아이템의 연관 배열. 어떤 영역에서는 자동으로 전역화된다.

이변수는 '슈퍼전역', 도는 자동 전역, 변수이다. 이 말의 의미는 스크립트 내의 모든 영역에서 사용가능하다는 것이다. $HTTP_POST_FILES를 사용할때와 마찬가지로, 함수나 메소드에서 이 변수에 접근하기 위해 global $_FILES;를 사용할 필요는 없다.

$HTTP_POST_FILES는 같은 정보를 갖고 있지만, 자동 전역 변수가 아니다.

register_globals 디렉티브가 설정되어있으면, 이변수는 스크립트의 전역 유효영역에서 사용가능해진다. 즉,$_FILES$HTTP_POST_FILES 배열에서 독립적으로 사용된다. 관련 정보는, 전역 등록 사용하기라는 보안 챕터를 참고한다. 이들 각각의 전역변수는 자동전역이 아니다.

Request 변수: $_REQUEST

참고: 4.1.0부터 지원됨. 이전 버전에서는 관련된 배열이 없다.

참고: PHP 4.3.0 이전에는 $_REQUEST 안에도 $_FILES 정보가 포함되어 있었다.

$_GET, $_POST, $_COOKIE의 내용물로 구성된 연관 배열.

이변수는 '슈퍼전역', 도는 자동 전역, 변수이다. 이 말의 의미는 스크립트 내의 모든 영역에서 사용가능하다는 것이다. 함수나 메소드에서 이 변수에 접근하기 위해 global $_REQUEST;를 사용할 필요는 없다.

register_globals 디렉티브가 설정되어있으면, 이변수는 스크립트의 전역 유효영역에서 사용가능해진다. 즉,$_REQUEST 배열에서 독립적으로 사용된다. 관련 정보는, 전역 등록 사용하기라는 보안 챕터를 참고한다. 이들 각각의 전역변수는 자동전역이 아니다.

세션 변수: $_SESSION

참고: 4.1.0부터 지원됨. 이전 버전에서는 $HTTP_SESSION_VARS를 사용했슴.

현재 스크립트에서 사용가능한 세션 변수를 포함하는 연관배열. 이 변수를 사용하는 방법에 대한 자세한 정보는 Session functions 문서를 참고.

이변수는 '슈퍼전역', 도는 자동 전역, 변수이다. 이 말의 의미는 스크립트 내의 모든 영역에서 사용가능하다는 것이다. $HTTP_SESSION_VARS를 사용할때와 마찬가지로, 함수나 메소드에서 이 변수에 접근하기 위해 global $_SESSION;를 사용할 필요는 없다.

$HTTP_SESSION_VARS는 같은 정보를 갖고 있지만, 자동 전역 변수가 아니다.

register_globals 디렉티브가 설정되어있으면, 이변수는 스크립트의 전역 유효영역에서 사용가능해진다. 즉,$_SESSION$HTTP_SESSION_FILES 배열에서 독립적으로 사용된다. 관련 정보는, 전역 등록 사용하기라는 보안 챕터를 참고한다. 이들 각각의 전역변수는 자동전역이 아니다.

Global 변수: $GLOBALS

참고: $GLOBALS PHP 3.0.0부터 지원되었다.

현재 스크립트의 전역 유효영역내에서 선언되어있는 모든변수에 대한 참조를 포함하는 연관배열이다. 변수명은 배열의 키로 사용된다.

이변수는 '슈퍼전역', 도는 자동 전역, 변수이다. 이 말의 의미는 스크립트 내의 모든 영역에서 사용가능하다는 것이다. 함수나 메소드에서 이 변수에 접근하기 위해 global $GLOBALS;를 사용할 필요는 없다.

이전 에러 메시지: $php_errormsg

$php_errormsg는 PHP에 의해 생성되는 가장 최근의 에러 메시지 텍스트를 포함하는 변수이다. 이변수는 에러가 발생한 영역내에서만 유효하다. 그리고, track_errors 설정 옵션이 on되어있어야 한다(초기값은 off이다)

출처 : Tong - 드렁크수달스님의 ■ PHP ■통

"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기,
각종 광고, 영업, 판매, 제안서, 전단지
반응율 3배×10배 이상 높이는 마법의 8단계 공식"
자세히보기

Comments

번호 제목 글쓴이 날짜 조회
3285 이것은 AI파일 미리보기입니다. 댓글3 M 최고의하루 01.15 3594
3284 이미지미리보기pds파일미리보기파일입니다^^ 댓글2 99 단국강토 01.14 2831
3283 동영상 캡쳐(Capture) 아주 쉽게 하기~ 99 단국강토 01.14 2621
3282 자판기안의 특수문자 99 단국강토 01.13 2537
3281 ntdll.dll 오류 해결방법 M 최고관리자 01.12 4401
3280 인터넷 동영상 저장하기 - 넷트랜스포터 사용 - M 최고의하루 01.12 3106
3279 옛날 기사를 찾아보고 싶을때 99 단국강토 01.08 2237
3278 CD 음악 mp3로 바꾸기 99 단국강토 01.08 2507
3277 알씨로 초간단 동영상 슬라이드쇼 만들기 99 단국강토 01.07 2852
3276 IP 추적은 어떻게 하는가? 99 단국강토 01.07 2400
3275 일본어로 된 웹을 한글로 즐기기 99 단국강토 01.06 2358
3274 이것은 AI파일 미리보기입니다. 댓글2 M 최고의하루 01.15 4062
3273 이미지미리보기pds파일미리보기파일입니다^^ 99 단국강토 01.14 2455
3272 동영상 캡쳐(Capture) 아주 쉽게 하기~ 99 단국강토 01.14 2790
3271 공유기 차단 무력화 시키는 법 99 단국강토 01.13 3560
3270 자판기안의 특수문자 99 단국강토 01.13 2369
3269 ntdll.dll 오류 해결방법 M 최고의하루 01.12 3675
3268 인터넷 동영상 저장하기 - 넷트랜스포터 사용 - M 최고의하루 01.12 3231
3267 옛날 기사를 찾아보고 싶을때 99 단국강토 01.08 2177
3266 CD 음악 mp3로 바꾸기 99 단국강토 01.08 2490
3265 알씨로 초간단 동영상 슬라이드쇼 만들기 99 단국강토 01.07 3319
3264 IP 추적은 어떻게 하는가? 99 단국강토 01.07 2217
3263 일본어로 된 웹을 한글로 즐기기 99 단국강토 01.06 2314
3262 [컴퓨터 키보드, 특수문자 정식 명칭들] M 최고의하루 12.18 3709
3261 하드,CPU,RAM 지원표 M 최고의하루 12.18 2594
3260 award bios 어워드 바이오스 설정법 M 최고의하루 12.18 3950
3259 내장 그래픽카드 죽이는 법 M 최고의하루 12.04 4900
3258 컴퓨터 조립 M 최고의하루 12.04 2841
3257 USB 버젼 속도 차이 2 천진난만 02.20 2380
3256 제가 사용하고 있는 마케팅프로그램입니다 댓글1 3 천지인 05.23 13199
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취