웹모아 
웹모아[손님] 검색 로그인   
웹모아
 
환경설정
 


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



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)


환경설정
페이지: 1 / 3   

 
  PHP.INI에서의 세션 관련 설정
[Session]session.save_handler = filessession.save_path = /tmpsession.use_cookies = 1session.name = PHPSESSIDsession.auto_start = 0session.cookie_lifetime = 0session.cookie_path = /session.gc_maxlifeti조회(3950)          



  [PHP] $_SERVER
 $_SERVER['DOCUMENT_ROOT'] = 현재 사이트가 위치한 서버상의 위치ex) /webapp/include$_SERVER['HTTP_ACCEPT_ENCODING'] = 인코딩 방식 ex) gzip, deflate$_SERVER['HTTP_ACCEPT_LANGUAGE'] = 언어&nb조회(3428)          



  php 에서 세션시간설정
php.ini 파일안 ## 사용자가 아무짓안할경우 4초후 생명을 마감한다 ## session.gc_maxlifetime = 4 ## 웹브라우저를 끌때까지 생존한다 ## session.cookie_lifetime = 0 ---------------------------------------------------------------------조회(1337)          



  업로드 용량과 관련한 php.ini 파일 설정
업로드 용량과 관련한 php.ini 파일 설정 file_uploads = On 파일 업로드를 허용할지 설정하는 부분으로 당연히 ON으로 되어 있어야 합니다. upload_max_filesize = 200M 최대 업로드 파일 사이즈입니다. post_max_size = 200M Post방식으로 넘겨질 최대 데이터 사이즈입니다. ma조회(1290)          



  mbstring - PHP 확장모듈을 추가하는 방법
[PHP 확장모듈을 추가하는 방법] - 작성자 : 김칠봉 - 작성일 : 2003.03.02 - 분 류 : PHP - 수 준 : 초급 - 내 용 : PHP 확장모듈 mbstring.so을 추가하는 방법(예제) - 키워드 : PHP, extension, modules, mbstring.so *주) 이 문서에 대한 최신조회(1331)          



    [RE] mbstring - PHP 확장모듈을 추가
# cd /usr/local/php/ext/mbstring # /usr/local/php/bin/phpize #./configure --with-php-config=/usr/local/php/bin/php-config --enable-mbstring # make 하시면.. [root@landmoa mbstring]# find / -name조회(1459)          





  타도메인간 쿠키 공유하기
출처 : phpschool 글을 시작하기전에 아래 팁택 또는 여러 레퍼런스를 뒤지다보면 많은 자료가 있긴하지만 구현 방법에 대한 소스와 설명이 부족한거같아 예제를 같이 올려봅니다 물론 허접할수도있지만 조금이나마 도움이 됬으면 합니다 타도메인간 쿠키를 공유하기위해서는 4가지 방법을 제시하더군요 1. sso서버를 이용한 별도조회(1710)          



  home 데이타 백업 스크립트
아래 스크립트를 복사하여 저장한후 실행 권한을 주고 /etc/crontab에 넣어두어 매일 실행하도록 합니다. # vi /etc/crontab 00 8 * * * root /usr/local/bin/php /root/bin/home_backup.php > /dev/null 2>&1 매일 8시 정각에 해당 스크립트를 실행합니다. #####조회(1284)          



  cron 이용 일정시간마다 php문실행
linux]#vi /etc/crontab 분 시 날짜 달 요일 권한 command 형식으로 입력해줌... ex) 05 * * * * root /home/html/update.php -> 매시 5분에 update.php문 실행 ex) 05 15 * * * root /home/html/update.php -> 매일 오후 3시 5분에 update조회(2099)          



  cron, crontab, PHP 소스 자동실행,
1) test.php : 실제 작업을 담당하는 소스가 있는 파일 !#/usr/bin/php -> 설치환경에 따라 다를 수 있으므로 경로를 잘 확인해서 적어주자! 이렇게 소스 파일을 준비하고 나서.. 2)cron에 등록하기 [root@localhost] crontab -e 저렇게 명령을 때려준다. 그럼 vi조회(1566)          



  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조회(1400)          



  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)     조회(1284)          



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



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



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




≪ [1]  [2]  [3]   ≫

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


 
최근 글
[손님]
164
292
506
302
316
194
280
3276
870
888
1071
912
4181
3482
3544
 
인기 글
[손님]
3274
3482
4121
4628
3332
3233
4618
4944
3142
4355
  [홈마스타] [RE] input type=\\
6674
3378
8784
3884
3836