웹모아
웹모아[회원가입] 로그인 / 회원가입   검색     



  
환경설정
 


PHP 슈퍼전역변수 들의 종류
  2007-06-09 22:33:13 댓글:(0)   조회:19907


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
 







 
댓글쓰기는 회원(로그인 하신분) 이상 가능합니다.


댓글 (0)


환경설정
페이지: 3 / 5   


    php.ini 값 설정가능한(홈마스타) 1571
 PHP 슈퍼전역변수 들의 종(홈마스타) 19908
    쿠키공유를 위한 헤드값(홈마스타) 1457
    php.ini 설정하기(홈마스타) 1544
    php.ini (V4.2.3(홈마스타) 1437
    php.ini (V4.2.3(홈마스타) 1491
    환경을 실행중에 임시로 바꾸(홈마스타) 1336
    php.ini (V4.2.3(홈마스타) 1554
    error_reporting(홈마스타) 1844
    경과만료 페이지 없애기(홈마스타) 1795

  [1]  [2]  [3]  [4]  [5]  

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



 
최근 글
[손님]





인기 글
[손님]
[자나가다] (3) 자유게시판이라...