웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
PHP 혼자 공부하기 - 4 :: 미리 정의된 변수
2003.04.09 17:13
이야~ 벌써 네번째네요~ ^^
저도 하던 작업이 있어서 우선은 여기까지만 강의하고 며칠 뒤에 또 올릴께요~
php.ini 에 register_globals 라는 옵션이 있고 대부분의 웹호스팅에서는 이 옵션이 On 되어있습니다. 되게 편하기는 한 옵션입니다.
예를 들어, test.php?name=행복한고니 라고 URL을 입력하면...
<?php echo $name ?>
과 같이 간단하게 받아올 수 있으니까요... 그렇지만 이 경우 보안상에는 꽤 문제가 될 수도 있습니다.
register_globals 옵션을 켜두게 되면 쿠키, 세션, GET, POST 모두가 전역 변수로 등록됩니다. 여기에서 문제가 발생하죠. 만약 변수명이 같게 되면 어느 쪽이던지 데이타가 사라져 버리게 됩니다. 조심해야할 문제죠. 더군다나 보안상의 위험이 생길 수도 있습니다. 그래서 세션이나 쿠키같은 값은 대게 $_SESSION 이나 $_COOKIE 와 같은 시스템 변수로 받아오는 것이 안전하며, 이것은 GET이나 POST에도 마찬가지로 적용됩니다.
사용자가 지정해주지 않아도 미리 생겨있는 $_SESSION, $_COOKIE 같은 변수들을 Predefined variables(미리정의된 변수) 라고 하며, 다음과 같습니다. 각각의 변수들은 전부 배열로 표현되며 $_SERVER[PHP_SELF] 와 같이 값을 사용합니다.
$GLOBALS
전역변수, 글로벌 변수라고 부릅니다. 말 그대로 현재의 프로그램 전체에 걸쳐서 영향을 미치는 변수입니다.
$_SERVER - 4.1.0 이하는 $HTTP_SERVER_VARS
서버의 환경값이 있는 변수입니다.
...PHP_SELF : 현재 실행되는 PHP프로그램의 경로를 알려줍니다.
...argv : GET방식으로 전달받을 때는 이 곳에 쿼리문 전체(예를들어. test.php?num=123&name=고니 중 num=123&name=고니)를 저장해두며, 쉘 상에서 실행될때는 이곳에 전달받은 argument 값들을 저장합니다.
...argc : 쉘 상에서 실행되었을 경우, 전달받은 파라미터의 갯수를 저장합니다.
...GATEWAY_INTERFACE : 서버가 사용하는 CGI 사양을 알려줍니다. 보통은 CGI/1.1 처럼 출력됩니다.
...SERVER_NAME : 서버의 이름입니다.
...SERVER_SOFTWARE : 서버가 사용하는 소프트웨어를 알려줍니다. 저의 경우에는 Apache/1.3.24 With MMAP/EAPI (Win32) PHP/4.1.2 mod_ssl/2.8.8 OpenSSL/0.9.6c 로 출력되네요.
...SERVER_PROTOCOL : 서버의 프로토콜을 알려줍니다. 당연히 Web 서버이니까 HTTP 입니다.
...REQUEST_METHOD : 페이지 요청 방식을 알려줍니다. GET, HEAD, POST, PUT 등이 있습니다.
...QUERY_STRING : 쿼리문 전체를 알려줍니다.
나머지는 대강 생략하고... 다시 몇 가지...
...HTTP_HOST : 현재의 서버 도메인을 알려줍니다.
...HTTP_REFERER : 현재 문서의 바로 전 문서를 알려줍니다. 어디서 왔는지 알 수 있죠.
...HTTP_USER_AGENT : 사용자의 웹브라우저 종류를 알 수 있습니다.
...REMOTE_ADDR : 사용자의 IP주소 입니다.
...PHP_AUTH_USER : 인증을 거쳤을 때의 사용자아이디입니다.
...PHP_AUTH_PW : 인증을 거쳤을 때의 사용자패스워드입니다.
...PHP_AUTH_TYPE : 인증 방식입니다.
$_GET - 4.1.0 이하는 $HTTP_GET_VARS
GET방식으로 전달받은 값들이 저장되는 변수입니다.
GET방식이란 test.php?num=1234 와 같이 주소표시줄에서 전달받는 방식을 말합니다.
전달받은 변수는 $_GET[num] 과 같이 사용할 수 있습니다.
$_POST - 4.1.0 이하는 $HTTP_POST_VARS
POST방식으로 전달받은 값들이 저장되는 변수입니다.
전달받은 변수는 $_POST[변수명]과 같이 사용할 수 있습니다.
$_COOKIE - 4.1.0 이하는 $HTTP_COOKIE_VARS
쿠키값이 저장되는 변수입니다.
전달받은 변수는 $_COOKIE[쿠키명]과 같이 사용할 수 있습니다.
$_FILES - 4.1.0 이하는 $HTTP_POST_FILES
업로드한 파일값을 저장하는 변수입니다.
$_ENV - 4.1.0 이하는 $HTTP_ENV_VARS
여러가지 환경값이 저장되는 변수입니다.
$_SESSION - 4.1.0 이하는 $HTTP_SESSION_VARS
세션값이 저장되는 변수입니다.
전달받은 변수는 $_SESSION[세션명]과 같이 사용할 수 있습니다.
그냥 이런 변수들이 있구나... 하는 것 정도만 알고 가시면 됩니다. $_GET 이나 $_POST 등은 PHP내부적으로 자동 등록되므로 register_globals 옵션에 관계없이 사용할 수 있으며 PHP 버전 4.1.0 이상이어야 사용가능합니다. ^^ 4.1.0이하에서 사용한 것들도 아직까지는 사용할 수 있지만 곧 지원되지 않을 예정이라고 하므로 가급적이면 사용을 피하는 것이 좋습니다.
### 오늘 생각해볼 것
1. 현재 실행되고 있는 파일명을 출력하라.
2. 사용자의 IP를 출력하라.
저도 하던 작업이 있어서 우선은 여기까지만 강의하고 며칠 뒤에 또 올릴께요~
php.ini 에 register_globals 라는 옵션이 있고 대부분의 웹호스팅에서는 이 옵션이 On 되어있습니다. 되게 편하기는 한 옵션입니다.
예를 들어, test.php?name=행복한고니 라고 URL을 입력하면...
<?php echo $name ?>
과 같이 간단하게 받아올 수 있으니까요... 그렇지만 이 경우 보안상에는 꽤 문제가 될 수도 있습니다.
register_globals 옵션을 켜두게 되면 쿠키, 세션, GET, POST 모두가 전역 변수로 등록됩니다. 여기에서 문제가 발생하죠. 만약 변수명이 같게 되면 어느 쪽이던지 데이타가 사라져 버리게 됩니다. 조심해야할 문제죠. 더군다나 보안상의 위험이 생길 수도 있습니다. 그래서 세션이나 쿠키같은 값은 대게 $_SESSION 이나 $_COOKIE 와 같은 시스템 변수로 받아오는 것이 안전하며, 이것은 GET이나 POST에도 마찬가지로 적용됩니다.
사용자가 지정해주지 않아도 미리 생겨있는 $_SESSION, $_COOKIE 같은 변수들을 Predefined variables(미리정의된 변수) 라고 하며, 다음과 같습니다. 각각의 변수들은 전부 배열로 표현되며 $_SERVER[PHP_SELF] 와 같이 값을 사용합니다.
$GLOBALS
전역변수, 글로벌 변수라고 부릅니다. 말 그대로 현재의 프로그램 전체에 걸쳐서 영향을 미치는 변수입니다.
$_SERVER - 4.1.0 이하는 $HTTP_SERVER_VARS
서버의 환경값이 있는 변수입니다.
...PHP_SELF : 현재 실행되는 PHP프로그램의 경로를 알려줍니다.
...argv : GET방식으로 전달받을 때는 이 곳에 쿼리문 전체(예를들어. test.php?num=123&name=고니 중 num=123&name=고니)를 저장해두며, 쉘 상에서 실행될때는 이곳에 전달받은 argument 값들을 저장합니다.
...argc : 쉘 상에서 실행되었을 경우, 전달받은 파라미터의 갯수를 저장합니다.
...GATEWAY_INTERFACE : 서버가 사용하는 CGI 사양을 알려줍니다. 보통은 CGI/1.1 처럼 출력됩니다.
...SERVER_NAME : 서버의 이름입니다.
...SERVER_SOFTWARE : 서버가 사용하는 소프트웨어를 알려줍니다. 저의 경우에는 Apache/1.3.24 With MMAP/EAPI (Win32) PHP/4.1.2 mod_ssl/2.8.8 OpenSSL/0.9.6c 로 출력되네요.
...SERVER_PROTOCOL : 서버의 프로토콜을 알려줍니다. 당연히 Web 서버이니까 HTTP 입니다.
...REQUEST_METHOD : 페이지 요청 방식을 알려줍니다. GET, HEAD, POST, PUT 등이 있습니다.
...QUERY_STRING : 쿼리문 전체를 알려줍니다.
나머지는 대강 생략하고... 다시 몇 가지...
...HTTP_HOST : 현재의 서버 도메인을 알려줍니다.
...HTTP_REFERER : 현재 문서의 바로 전 문서를 알려줍니다. 어디서 왔는지 알 수 있죠.
...HTTP_USER_AGENT : 사용자의 웹브라우저 종류를 알 수 있습니다.
...REMOTE_ADDR : 사용자의 IP주소 입니다.
...PHP_AUTH_USER : 인증을 거쳤을 때의 사용자아이디입니다.
...PHP_AUTH_PW : 인증을 거쳤을 때의 사용자패스워드입니다.
...PHP_AUTH_TYPE : 인증 방식입니다.
$_GET - 4.1.0 이하는 $HTTP_GET_VARS
GET방식으로 전달받은 값들이 저장되는 변수입니다.
GET방식이란 test.php?num=1234 와 같이 주소표시줄에서 전달받는 방식을 말합니다.
전달받은 변수는 $_GET[num] 과 같이 사용할 수 있습니다.
$_POST - 4.1.0 이하는 $HTTP_POST_VARS
POST방식으로 전달받은 값들이 저장되는 변수입니다.
전달받은 변수는 $_POST[변수명]과 같이 사용할 수 있습니다.
$_COOKIE - 4.1.0 이하는 $HTTP_COOKIE_VARS
쿠키값이 저장되는 변수입니다.
전달받은 변수는 $_COOKIE[쿠키명]과 같이 사용할 수 있습니다.
$_FILES - 4.1.0 이하는 $HTTP_POST_FILES
업로드한 파일값을 저장하는 변수입니다.
$_ENV - 4.1.0 이하는 $HTTP_ENV_VARS
여러가지 환경값이 저장되는 변수입니다.
$_SESSION - 4.1.0 이하는 $HTTP_SESSION_VARS
세션값이 저장되는 변수입니다.
전달받은 변수는 $_SESSION[세션명]과 같이 사용할 수 있습니다.
그냥 이런 변수들이 있구나... 하는 것 정도만 알고 가시면 됩니다. $_GET 이나 $_POST 등은 PHP내부적으로 자동 등록되므로 register_globals 옵션에 관계없이 사용할 수 있으며 PHP 버전 4.1.0 이상이어야 사용가능합니다. ^^ 4.1.0이하에서 사용한 것들도 아직까지는 사용할 수 있지만 곧 지원되지 않을 예정이라고 하므로 가급적이면 사용을 피하는 것이 좋습니다.
### 오늘 생각해볼 것
1. 현재 실행되고 있는 파일명을 출력하라.
2. 사용자의 IP를 출력하라.
댓글 13
제목 | 글쓴이 | 날짜 |
---|---|---|
주소창에 경로감추기 [5] | ☆쭈야☆ | 2005.10.29 |
임의로 전체에서 몇개의 배너만 출력하기(오류 수정 ㅜ,.ㅜ) | ColonD | 2005.10.20 |
2005/10/16 21:15 pm 형식으로 출력되는 시계 [5] | 웹-하루 | 2005.10.18 |
클릭으로 배경색 바꾸는 스크립트(수정) [1] | ColonD | 2005.10.16 |
배경색 랜덤으로 바꾸는 스크립트 [1] | ColonD | 2005.10.15 |
뉴스티커 [4] | beMax | 2005.08.26 |
Rain# 머문시간 나타내기 [상태창] | Rain | 2005.08.14 |
자바스크립트 음악목록 랜덤 재생하기 | 만능천사 | 2005.08.14 |
미디어 플레이어? 난 곰플레이어야! [9] | 송재영 | 2005.07.24 |
SP2 팝업차단 무시하고 팝업띠우기?! [8] | 오길호 | 2005.07.23 |
파일 업로드 버튼 이미지로 사용하기 [1] | 행복한고니 | 2005.06.29 |
마우스 오른쪽버튼 금지시키기스크립트 [5] | 박시현 | 2005.06.26 |
링크 점선 처리 onfocus=blur() [5] | woosh | 2005.06.06 |
상태 표시줄 감지 (URL 가리고 내용 표시) 업그레이드 소스 [2] | ArⓒH | 2005.05.30 |
팝업창을 내용에 맞게 크기 자동조정하기 [2] | 김경수 | 2005.04.23 |
타켓으로 페이지 이동하는 스크립트 [2] | 로크 | 2005.04.16 |
풍선도움말 스크립트 [3] | 행복한고니 | 2005.04.11 |
플래쉬 갤러리 비슷한 자바스크립 갤러리 [13] | monozzang | 2005.04.04 |
플래시 칼라피커 두번째 버전 [1] | 행복한고니 | 2005.03.16 |
테이블선(지정위치)을 따라 이동하는 top [3] | sharim | 2005.03.14 |