미리 선언된 변수
PHP는 실행되는 스크립트에 적용이되는 상당량의 미리 선언된 변수를 제공한다. 하지만, 이 변수의 대부분은 운영되는 서버, 서버의 버전, 서버의 설정, 다른 팩터와 관련되어 있어서 완벽하게 문서화되지 않았다. 이 중 몇개의 변수는 커맨드 라인에서 실행되는 PHP에서는 유효하지 않다. 예약된 미리 선언된 변수의 섹션을 참고.
주의 |
PHP 4.2.0 이후 버전부터, PHP 디렉티브 register_globals의 기본값은 off가 되었다. register_globals를 off로 놓으면, 전역 유효영역안의 미리 선언된 변수 집합들에 영향을 미친다. 예를 들면, DOCUMENT_ROOT값을 얻기 위해서는 $DOCUMENT_ROOT 대신에 $_SERVER['DOCUMENT_ROOT']를, http://www.example.com/test.php?id=3에서 $id 대신에 $_GET['id']를, $HOME 대신에 $_ENV['HOME']을 사용해야 한다. 이와 관련된 변경사항은 register_globals의 설정 엔트리를 읽거나, 전역 등록 사용하기에 관한 보안 챕터는 물론, 4.1.0과 4.2.0 Release Announcements도 참고하기 바란다. superglobal arrays와 같은 가용한 PHP의 예약된 미리 선언된 변수를 사용하는 것을 추천한다. |
4.1.0 버전 이후에, PHP는 웹서버, 환경, 유저 입력과 관련된 미리 선언된 배열 변수 집합을 추가적으로 제공한다. 이 새로운 배열은 자동적으로 전역화되기 때문에 더 특별해진다. 즉, 자동적으로 모든 유효영역안에서 적용이 가능하다. 이런 이유로, 이런 변수를 '자동전역변수' 또는 '슈퍼전역변수' 이라고 불리기도 한다. (PHP에서는 사용자-선언 슈퍼전역변수가 허용되지 않는다.) 슈퍼전역변수는 아래에 열거한다. 하지만, 이 변수 목록과 논의는 예약된 미리선언된 변수섹션을 참고한다. 또한 구버전의 미리선언된 변수($HTTP_*_VARS)가 아직도 존재한다는 것에 주의한다. PHP 5.0.0부터, 긴 형태의 PHP 예약 변수 배열을 register_long_arrays 지시어로 비활성화할 수 있습니다.
가변 변수: 슈퍼전역변수는 가변 변수로는 쓰일수 없다.
variables_order내의 특정 변수들이 설정되어있지 않으면, 적합한 PHP의 미리선언된 배열도 비워있게 된다.
PHP 슈퍼전역변수
- $GLOBALS
-
스트립트의 전역 유효영역에서 쓸수있는 모든 변수에 대한 참조를 포함한다. 이 배열의 key는 전역 변수들의 이름이다. PHP 3 이래로 $GLOBALS가 존재해왔다.
- $_SERVER
-
웹서버나, 현재 스크립트의 실행환경에 직접적으로 관련되어 설정되는 변수이다. 구버전의 $HTTP_SERVER_VARS 배열과 동일하다. (이 변수는 현재 유효하지만, 추천하지는 않는다)
- $_GET
-
HTTP GET에 의해 스크립트로 제공되는 변수이다. 구버전의 $HTTP_GET_VARS 배열과 동일하다. (이 변수는 현재 유효하지만, 추천하지는 않는다)
- $_POST
-
HTTP POST에 의해 스크립트로 제공되는 변수이다. 구버전의 $HTTP_POST_VARS 배열과 동일하다. (이 변수는 현재 유효하지만, 추천하지는 않는다)
- $_COOKIE
-
HTTP 쿠키에 의해 스크립트로 제공되는 변수이다. 구버전의 $HTTP_COOKIE_VARS 배열과 동일하다. (이 변수는 현재 유효하지만, 추천하지는 않는다)
- $_FILES
-
HTTP post 파일 업로드에 의해 스크립트로 제공되는 변수이다. 구버전의 $HTTP_POST_FILES 배열과 동일하다. (이 변수는 현재 유효하지만, 추천하지는 않는다). 더 자세한 정보는 POST 메소드 업로드를 참고하도록 한다.
- $_ENV
-
환경에 의해 스크립트로 제공되는 변수이다. 구버전의 $HTTP_ENV_VARS 배열과 동일하다. (이 변수는 현재 유효하지만, 추천하지는 않는다)
- $_REQUEST
-
GET, POST, COOKIE 입력 메카니즘을 통해 스크립트로 제공되는 변수이다. 이 메카니즘은 신용될수는 없다. 이 배열 안에 포함된 존재하는 변수와 변수의 나열 순서는 PHP variables_order 설정 디렉티브에 의해 정의된다. 이 배열은 PHP 4.1.0 이전 버전에서 동일한 변수가 존재하지 않는다. import_request_variables()도 참고.
경고 PHP 4.3.0이후, $_REQUEST 안에 FILE 정보를 갖는 $_FILES 변수가 존재하지 않게 되었다.
참고: 커맨드 라인에서 수행될때, 이 변수는 argv와 argc 엔트리에 포함되지 않는다; 이 변수들은 $_SERVER 배열에 존재한다.
- $_SESSION
-
스크립트의 세션에 등록되는 변수이다. 구버전의 $HTTP_SESSION_VARS 배열과 동일하다. (이 변수는 현재 유효하지만, 추천하지는 않는다). 더 자세한 정보는 Session handling functions섹션을 참고.
"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기, 각종 광고, 영업, 판매, 제안서, 전단지 반응율 3배×10배 이상 높이는 마법의 8단계 공식" |
☞자세히보기 |
|
|