웹모아 
웹모아  로그인  회원가입   
웹모아
 
환경설정
 


  PHP 슈퍼전역변수 들의 종류
  등록: 2007-06-09 22:33:13 조회:19145



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
   $DB['dbname'] = "webboard";
   $DB['host'] = "123.222.33.11";
   $DB['user'] = "user";
   $DB['pass'] = "passwd";
   $DB['server'] = "oracle";

   $IMG_URL     = "http://www.couplewith.com:3900";
   $IMG_BASE     = "/svc/home";
   $IMG_MAX_WIDTH  = 300;
   $IMG_MAX_HEIGHT = 300;
?>

--> dbconn.inc
   if ($DB['server'] == "mysql"){
       $conn = mysql_connect($DB['host'], $DB['user'], $EB['pass'], $DB['dbname'] );
   else
   if ($DB['server'] == "mysql"){
       $conn = ora_connect($DB['host'], $DB['user'], $EB['pass'], $DB['dbname'] );
   }else{
        // ERROR Not Support Database;
   }
?>

--> board.php
     include_once "../inc/varconf.inc";
     include_once "../inc/dbconn.inc";

    .. .중략 ....
     echo "     

?>

 

  2.2.2 global을 이용한 함수 내부에서 전역변수 사용

   : 함수를 이용시 외부 선언된 전역 변수를 사용하기 위해서 

      global 외부변수명1, 외부변수명2, ..


    를 선언하여 외부변수를 사용 할수 있습니다.
 

-->function_test.php

$Global_var1 = "global";

function aaa( $var1 ){
    echo "[$var1]";
    echo "[$Global_var1 ]";   //undefined variable $Global_var1 에서 발생
}

function bbb( $var1 ){
   global $Global_var1 ;
    echo "[$var1]";
    echo "[$Global_var1 ]";

}

aaa($Global_var1);
bbb($Global_var1);

?>   


2.3 서버 환경 변수 (서버 글로벌 변수)

  - 서버 환경 변수는 웹서비스의 환경 변수 또는 시스템과 연관된 변수여서 서버 글로벌 변수라고도 합니다.

 
 - 이들은 $_SERVER[''HTTP_HOST'] 같은 변수들을 편리하게 접근할수 있습니다.

 

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

   PHP 메뉴얼의 G. 부록. 예약어 목록  -> 기선언 변수 를 참고 하시면 됩니다.

 

다음과 같은 파일을 만들면 다른 변수들및 환경을 확인 할수 있습니다.

->> info.php
  phpinfo();
?>


모두 $_SERVER 또는 $_ENV 라는 배열에 포함 되어 읽을 수가 있습니다.

 

다음은 환경 변수 목록 입니다.

 

Apache Environment   Variable Value


DOCUMENT_ROOT         /export/home/MiBox 
HTTP_ACCEPT              image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,

                                   application/vnd.ms-excel, application/vnd.ms-powerpoint,

                                   application/msword, application/x-shockwave-flash, */* 
HTTP_ACCEPT_ENCODING   gzip, deflate 
HTTP_ACCEPT_LANGUAGE   ko 
HTTP_CONNECTION  Keep-Alive 
HTTP_COOKIE    idsave=off; loginid= 
HTTP_HOST    devel.couplewith.com:9080 
HTTP_USER_AGENT   Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) 
PATH     /usr/sbin:/usr/bin 
REMOTE_ADDR    219.250.199.236 
REMOTE_PORT    4227 
SCRIPT_FILENAME  /export/home/MiBox/info.php 
SERVER_ADDR    203.222.126.128 
SERVER_ADMIN   
mi@couplewith.co.kr 
SERVER_NAME    devel.couplewith.com 
SERVER_PORT    9080 
SERVER_SIGNATURE   Apache/1.3.31 Server at devel.netffice.com Port 9080
SERVER_SOFTWARE   Apache/1.3.31 (Unix) PHP/4.3.7 
GATEWAY_INTERFACE   CGI/1.1 
SERVER_PROTOCOL   HTTP/1.1 
REQUEST_METHOD    GET 
QUERY_STRING    no value 
REQUEST_URI    /info.php 
SCRIPT_NAME    /info.php
 




 

 





환경설정
페이지: 1 / 2   

   PHP.INI에서의 세션 관련 설정3708
   [PHP] $_SERVER3406
   php 에서 세션시간설정1306
   업로드 용량과 관련한 php.ini 파일 설정1265
   mbstring - PHP 확장모듈을 추가하는 방법1294
     [RE] mbstring - PHP 확장모듈을 추가1450
   타도메인간 쿠키 공유하기1697
   home 데이타 백업 스크립트1258
   cron 이용 일정시간마다 php문실행2047
   cron, crontab, PHP 소스 자동실행, 1504
   crontab 에서 php 파일 실행이 가능한지요?1369
   crontab php 스크립트 실행문제입니다.(1) 1267
   2차 도메인과의 세션고유1480
   POST로 값을 넘길때, 만료된 페이지입니다 문제의(홈마스타)3041
   세션(로그인)시간 무한대로 늘리기 초간단 초보용(홈마스타)(2) 1368
   php mysql 세션 관리(홈마스타)2304
   세션을 DB로 관리하기 + 쪽지 확인하기(홈마스타)(1) 1546
   브라우져를 종료해도 세션이 그대로 살아있어요(홈마스타)2390
   PHP에서 세션 사용하기(홈마스타)1364
   [설치/설정] PHP 파일업로드시 일정용량 이상 업(홈마스타)1234
   php.ini 값 설정가능한 범위 알아보기(홈마스타)1452
PHP 슈퍼전역변수 들의 종류(홈마스타)19146
   쿠키공유를 위한 헤드값(홈마스타)1378
   php.ini 설정하기(홈마스타)1373
   php.ini (V4.2.3) - III(홈마스타)1359
   php.ini (V4.2.3) - II(홈마스타)1409
   환경을 실행중에 임시로 바꾸기(홈마스타)1246
   php.ini (V4.2.3)(홈마스타)1450
   error_reporting(홈마스타)1759
   경과만료 페이지 없애기(홈마스타)1596
≪ [1]  [2]   ≫

복수단어 검색은 공백(space)로 구분해 주세요.



 
인기 글
3948
12844
9917
3748
4561
3860
4360
6199
10251
3817
4329
11505
5445
8080
6491
 
최근 글
94
137
138
104
86
102
2887
741
712
901
793
3959
3343
3381
3767