웹모아
웹모아[손님] 검색 로그인   


 
환경설정
 


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



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)


환경설정
페이지: 2 / 5   

 

  crontab 에서 php 파일 실행이 가능한지요?
php 로 실행을 할수 있습니다. php도 shell 상에서 실행을 시킬수 있습니다. shell 상에서 php 를 실행시킨다면 다음과 같이 할수 있겠지요. smson@linux work]$ cat test.php #!/usr/local/php/bin/php -q [smson@linux work]$ test.php Son Sang M조회(1401)          




  crontab php 스크립트 실행문제입니다.
#!/usr/local/bin/php -q<? header("Content-Type: text/html; charset=euc-kr");   include("config.inc.php"); $conn=mysql_connect($cfg_db_host,$cfg_db_user,$cfg_db_pass); mysql_sele댓글 (1)     조회(1286)          




  2차 도메인과의 세션고유
www.domain.com 과 blog.domain.com cafe.domain.com 등 도메인은 같지만 2차가 달라서 다른 홈페이지로 돌릴대 서로 간단히 세션 공유하는방법이 있습니다. php.ini 셋팅을 변경하는 법입니다. php.ini 에서 session.cookie_domain = .domain.com 으로 변경해주면 됩니조회(1512)          




  POST로 값을 넘길때, 만료된 페이지입니다 문제의
일단, HTTP에 전송 방식(METHOD)에 대한 이야기부터 하겠습니다. 일반적으로 PHP에서 많이 쓰이는 HTTP 전송 방식은 GET 방식과 POST 방식이 있습니다. (실제로는 이 두개 말고도 많이 있습니다. 안쓰이는 것 뿐이지요.) 이 두 방식의 차이를 우선 아셔야 하겠습니다. (자세하게 알고 싶은 분은 RFC-2616 : HTTP/1.1을 읽어보(홈마스타)     조회(3074)          




  세션(로그인)시간 무한대로 늘리기 초간단 초보용
호스팅 받으면서 세션 시간을 늘리기는 좀 어려워서리..... 1. 인덱스 페이지를 프레임으로 만듭니다. 2. 널페이지를 만드시고 걍 ~ 리플래쉬 시킵니다. /////////////////////////////////////// index.php ///////////////////// (홈마스타)     댓글 (2)     조회(1395)          




  php mysql 세션 관리
세션을 DB에 저장해서 사용해 보죠. 이것은 어떤 장점이 있을까요? 본게시판의 alpastar님이 쓰신 '세션처리에 대한 생각(1)'을 읽어보시면 됩니다. ^^; 소스는 여러분이 이해하기 쉽게 클래스나 템플릿을 배제하였습니다. 조금만 손보시면 실무적으로도 사용가능 하다고 봅니다. 잘못된 점은, 다리 부러지지 않을정도로만 깊은 태클 (홈마스타)     조회(2466)          




  세션을 DB로 관리하기 + 쪽지 확인하기
[1] 대개의 경우, 회원 로그인에 세션을 사용합니다. 즉 회원으로 로그인하지 않으면 세션을 사용할 일이 없는 경우가 많습니다. 따라서 여기서는 회원 전용 세션만 관리하도록 하겠습니다. [2] 세션 테이블을 만들어서, 여기에 매번 insert, delete를 하는 것은 비록 테이블 크기가 작다고 하더라도 제법 부하를 줍니다. 따라서 여기서는 delet(홈마스타)     댓글 (1)     조회(1595)          




  브라우져를 종료해도 세션이 그대로 살아있어요
php.ini에서도 session.lifetime = 0 session.cookie_lifetime = 0 session.gc_maxlifetime = 0 이렇게 했거든요.. 근데 브라우져를 종료하고 나서 다시 서비스에 접속하면 세션 값이 그대로 살아있어서 자동으로 로그인이 되어버립니다.. 어떻게 하면 되죠? ==(홈마스타)     조회(2453)          




  PHP에서 세션 사용하기
1.session_unset() 현재 연결된 세션에 등록되어 있는 모든 변수의 값을 삭제한다. session_unregister() 함수는 지정한 하나의 변수 자체를 완전히 삭제하는데 반해 session_unset() 함수는 세션 변수 자체를 삭제하는 것이 아니라 세션 변수에 저장되어 있던 값을 삭제한다. 그리고 하나의 세션 변수가 아닌 현재 세션에(홈마스타)     조회(1381)          




  [설치/설정] PHP 파일업로드시 일정용량 이상 업
정상적으로 레드헷 9.0과 PHP 4.2 버전을 설치하였고 파일 업로드 코드도 정상적으로 코딩하였습니다. 그런데 500k 이상의 파일에서 업로드가 되지 않는 현상이 일어났습니다. 500k이하의 파일은 정상적으로 올라가나 그 이상크기의 파일은 반응이 없거나 페이지를 찾을 수 없는 에러가 나거나 하였습니다. 누구나 그렇듯이 저도 php.ini의 파일 (홈마스타)     조회(1258)          




≪ [1]  [2]  [3]  [4]  [5]   ≫

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



 
최근 글
[손님]
48
53
214
359
594
345
389
230
340
3617
903
937
1161
950
4244
 
인기 글
[손님]
  [홈마스타] input 버턴의 모양
6612
  [랜드모아] 영문과 숫자만 사용
3100
3058
10106
4219
5035
6502
6199
10295
3861
3584
5009
3209
4295
11379