728x90

미리 정의된 변수
변수에는 우리가 만들어 사용할 수 있는 변수와 미리 정의되어진 변수가 있습니다. 우선 미리 정의된 변수는 서버 종류, 버전 등이나 기타 환경에 따라 변하는 변수들입니다. 아파치와 PHP 각각 몇 개의 변수를 지정해 놓은 상태이며 이 변수들은 우리가 인위적으로 값을 수정하거나 일반 변수로 사용할 수 없습니다. 이 변수들은 아파치 홈페이지나 PHP의 phpinfo() 함수로 확인할 수 있습니다.


수퍼 전역변수

$_GET  HTTP GET 방식으로 넘어온 변수
$_POST  HTTP POST 방식으로 넘어온 변수
$_COOKIE  HTTP 쿠키 변수
$_FILES  업로드시 파일 정보 변수
$_SESSION  세션 변수
$_SERVER  웹서버와 PHP 환경에서의 환경 설정 변수


외부로 부터의 변수

내부에 선언없이 외부로부터 넘어오는 변수입니다. 예제를 보시면 이해가 가실 겁니다.

참고.
이 소스는 register_globals=on 인 상태에서만 작동합니다.
이를 수정하시려면 서버의 php.ini 파일에서 위부분을 찾으시어 off 를 on 으로 바꾸시기 바랍니다.
혹은 $info 변수 대신에 $_POST["info"] 를 사용하셔도 무관합니다.

1
2
3
4
5
<form action="<? echo $PHP_SELF ?>" method=post>
<input name=info>
<input type=submit value=보내기>
</form>
<? echo "폼을 이용해 전송된 값 : $info "?>


위 소스는 폼에 임의의 값을 입력받아 자신의 파일($PHP_SELF)로 그 정보를 넘기는 프로그램입니다.



이 그림이 위의 소스를 실행한 결과입니다.



자 그럼 abc라는 값을 보내 보겠습니다. 위에서 폼의 action(정보를 보낼 문서 경로 지정)에 $PHP_SELF를 썼기 때문에 자기 자신 파일로 정보(abc)를 보내게 됩니다.$PHP_SELF 는 미리 정의된 변수로 자신의 파일명을 나타냅니다.



첫 번째 그림에서 없던 abc라는 값이 출력되었습니다. abc라는 값은 위의 소스에서 info라는 이름의 input 박스를 통해 넘어온 값입니다. 이 값은 $info 라는 변수에 자동 저장되므로 $info 변수를 통해서 이 값을 출력했습니다.

일반적인 변수 ( 프로그래머가 임의적으로 만들어 쓰는 변수 )

변수는 앞서 말씀드렸듯이 $ 표시를 시작으로 일정의 문자열을 덧붙여 만듭니다. 그런데 달러 표시 다음에 붙는 문자열에는 아무 문자나 올수 있는게 아니라 일정의 규칙을 위반하지 않아야만 변수로 이용할 수 있습니다. 이 규칙이 위배되지 않는 문자열을 식별자라고 합니다. 즉, 식별자는 변수나 클래스 함수등의 이름으로 쓰일 수 있는 문자열이지요.

1. 영문 소, 대문자 , 숫자 그리고 _ (밑줄)로 이루어 집니다. 이 이외의 문자를 포함하면 에러가 나게 됩니다.
2. 소문자 대문자의 구별이 있습니다. (PHP 내장함수 제외 예) print(""); 와 Print("");는 같음)
3. 변수는 반드시 $로 시작합니다..
4. 식별자의 첫 문자는 숫자가 올 수 없습니다. ( 7abc 는 식별자가 될 수 없음 )

팁.
PHP는 Unicode 변수를 허용하므로 한글 변수명도 사용가능합니다. $변수 처럼말이죠. 그래도 영문변수명을 쓰는 버릇을 들이세요 ^^ 허용가능한 식별자와 불가능한 식별자의 예를 비교해 보겠습니다.
허용 : babo , php4 , linux_apache_php_MySQL
불허 : babo? , 4php , linux-apache-php-MySQL
위의 비교를 유심히 살펴 보시면 어떤 것이 식별자로 사용 가능한지 아실 수 있을 것입니다. 그럼 이 식별자를 이용해 변수를 만들고 이 변수를 출력하는 프로그램을 만들어 보겠습니다.

1
2
3
4
5
6
<?
$a 
1;
$b 2;
$sum $a $b ;
echo 
"$a + $b = $sum";
?>

위 소스의 결과는 다음과 같습니다.



변수 $a 값과 $b 값을 더해서(+) $sum 변수값에 대입하고 출력하는 소스입니다. 쉽죠? 이제 변수가 어떤 것인지 조금 아시겠어요?

주의.
미리 정의된 변수와 똑같은 이름의 변수를 만들어 쓰지 않도록 유의하시기 바랍니다
PHP 버전 4.2.0 이후 부터는 보안상의 이유로 register_globals=off 로 되어 있습니다. register_globals 옵션은 환경,GET,POST,쿠키,서버 변수를 전역변수로 만들 것인지 설정하는 것입니다. on 인 경우에는 외부로 부터의 변수를 그저 $변수 하면 되었지만 off 인 경우는 반드시 출처에 맞게 GET을 통해온 것이면 $_GET[변수명] 과 같이 사용해야만 합니다. 관리자인 경우 on 으로 설정을 바꿀 수도 있지만 보안상의 이유로 off로 두어야만 할때, 아래와 같은 코드를 모든 PHP 파일 상단부에 삽입하시면 이 문제는 해결됩니다.

<?
extract($_POST);
extract($_GET);
extract($_SERVER); 
?>
728x90
복사했습니다!