PHP 슈퍼전역변수 들의 종류
1. 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 변수가 존재하지 않게 되었다.
$_SESSION
스크립트의 세션에 등록되는 변수이다. 구버전의 $HTTP_SESSION_VARS 배열과 동일하다.
(이 변수는 현재 유효하지만, 추천하지는 않는다).
더 자세한 정보는 Session handling functions섹션을 참고.
2. php 변수 사용
2.1. POST, GET, COOKIE, REQUEST 변수
예전에는 $aa, $bb 라는 변수가 다른 페이지로 전송 되면,
그 페이지에서도 $aa $bb 라는 변수로 접근이 가능 하였다.
그러나 여기에는 보안적인 최약점이 있어
register_globals = Off 라는 환경 변수로 설정을 제한하고 있습니다.
지금은 페이지 전송 방식에 따라
GET 방식으로 전송된 경우 $HTTP_GET_VARS['aa'] 또는 $_GET['aa']로
POST 방식으로 전송된 경우 $HTTP_POST_VARS['aa'] 또는 $_POST['aa']로만 접근이 됩니다.
그래서 일부 사용자는 이 부분이 귀찮아 register_globals = On으로 설정하여 사용하기도 합니다.
그러나 다른 개발 언어 보다는 변수 설정이나 활용에서 php가 훨씬 쉽고 간결 합니다.
$_COOKIE 의 경우 register_globals = On 로 설정 되면
cookie와 같은 변수명으로 GET 방식으로 전달하면 변수보다 우선 순위가 GET 방식이 높아서
쿠기변수가 아닌 GET으로 전달된 변수가 적용이되어 보안에 문제가 될 수 있습니다.
variables_order = "GPCS" 라는 php.ini 환경 변수에 의해 조정 됩니다.
( GPCS 는 GET, POST, Cookie, Environment and Built-in variables)
다음은 php.ini 내용의 일부 입니다.
; - register_globals = Off [Security, Performance]
; Global variables are no longer registered for input data (POST, GET, cookies,
; environment and other server variables). Instead of using $foo, you must use
; you can use $_REQUEST["foo"] (includes any variable that arrives through the
; request, namely, POST, GET and cookie variables), or use one of the specific
; $_GET["foo"], $_POST["foo"], $_COOKIE["foo"] or $_FILES["foo"], depending
; on where the input originates. Also, you can look at the
; import_request_variables() function.
; Note that register_globals is going to be depracated (i.e., turned off by
; default) in the next version of PHP, because it often leads to security bugs.
; Read http://php.net/manual/en/security.registerglobals.php for further
; information.
2.2. 사용자 전역 변수
2.2.1 include 파일을 이용한 전역 변수 설정
그러면 서비스 환경에서 자주 사용되고 공통으로 필요한 변수들이 관리가 편해 집니다.
-->varconf.inc
--> dbconn.inc
--> board.php



원국보기