form으로 post 방식으로 변수 전달 시 $_POST[변수]로 하는 이유가?? 정보
form으로 post 방식으로 변수 전달 시 $_POST[변수]로 하는 이유가??본문
특정 form에서 다음 페이지로 post 방식으로
변수(예를 들어 $var)들을 넘기는데
어떤 페이지들은 받는 페이지에서
그냥 $var를 쓰면 되는 페이지가 있고,
어떤 페이지들은 $_POST[var] 로 받아서 써야 하는 경우가 있는데
어떤 경우에 2개의 차이가 발생할까요?
그리고 $_POST[var] 형식으로 써야 되는 이유는 뭔가요?
도움 주시길 기다리겠습니다.
감사합니다.
댓글 전체
원칙적으로는 $_POST[var]를 쓰는 게 맞습니다.
PHP 쪽에서도 이쪽을 권장하고 있습니다.
그냥 $var를 쓰면 넘어오는 방식이 POST인지 GET인지를 검사하지 않습니다.
만약 POST로 넘어오는 값만 받아야 한다면,
그냥 $var를 쓰면 보안 문제가 일어날 수가 있겠죠.
그리고 $var를 쓰면 코딩 뒤에 개발자가 볼 때에 그냥 페이지 안에서 쓰는 변수인지,
아니면 REQUEST에서 넘어온 값인지가 불명확합니다.
그렇기 때문에 PHP에서도 $_POST[var] 쪽을 권장합니다.
이 점은 PHP 4.2.0 이후에 register_global 환경 변수의 기본값이 off가 된 것에서도 알 수가 있죠.
(register_global 환경 변수가 off면 $var 방식으로 REQUEST 되는 값을 받을 수 없고
$_POST[var]나 $_GET[var] 같은 방식으로 받아야 합니다)
만약에 POST나 GET 어느 쪽으로든 넘어오는 변수를 받을 생각이라면.
$var 보다는 $_REQUEST[var]를 쓰는 편이 좋습니다.
전에는 $_POST[var] 대신에 $HTTP_POST_VARS[var]도 썼지만
지금은 deprecated(비추천)입니다.
PHP 쪽에서도 이쪽을 권장하고 있습니다.
그냥 $var를 쓰면 넘어오는 방식이 POST인지 GET인지를 검사하지 않습니다.
만약 POST로 넘어오는 값만 받아야 한다면,
그냥 $var를 쓰면 보안 문제가 일어날 수가 있겠죠.
그리고 $var를 쓰면 코딩 뒤에 개발자가 볼 때에 그냥 페이지 안에서 쓰는 변수인지,
아니면 REQUEST에서 넘어온 값인지가 불명확합니다.
그렇기 때문에 PHP에서도 $_POST[var] 쪽을 권장합니다.
이 점은 PHP 4.2.0 이후에 register_global 환경 변수의 기본값이 off가 된 것에서도 알 수가 있죠.
(register_global 환경 변수가 off면 $var 방식으로 REQUEST 되는 값을 받을 수 없고
$_POST[var]나 $_GET[var] 같은 방식으로 받아야 합니다)
만약에 POST나 GET 어느 쪽으로든 넘어오는 변수를 받을 생각이라면.
$var 보다는 $_REQUEST[var]를 쓰는 편이 좋습니다.
전에는 $_POST[var] 대신에 $HTTP_POST_VARS[var]도 썼지만
지금은 deprecated(비추천)입니다.
아마도 $_POST[var]은 var이라는 변수의 값을 넘겨 받기위해 사용하는것이겠구요.
$var은 변수의 값을 출력하기 위해 사용하는 것이겠지요.
(예) $name=$_POST("name");
echo "넘겨받은 이름 => $name 입니다.";
참고로 PHP 4.1.X 부터는 배열명(첨자) 형식으로 하면 경고 메시지가 뜹니다.(첨자에 따옴표 없음)
그래서 앞으로는 배열명("첨자") 이런식으로 표기해야 한다네요.(첨자에 따옴표 붙임)
자세한 설명은 아래 링크를 참조하세요.
http://www.koreaphp.co.kr/tip_board/board_read.php?page=1&block=1&no=110&cate=25&parent=61
$var은 변수의 값을 출력하기 위해 사용하는 것이겠지요.
(예) $name=$_POST("name");
echo "넘겨받은 이름 => $name 입니다.";
참고로 PHP 4.1.X 부터는 배열명(첨자) 형식으로 하면 경고 메시지가 뜹니다.(첨자에 따옴표 없음)
그래서 앞으로는 배열명("첨자") 이런식으로 표기해야 한다네요.(첨자에 따옴표 붙임)
자세한 설명은 아래 링크를 참조하세요.
http://www.koreaphp.co.kr/tip_board/board_read.php?page=1&block=1&no=110&cate=25&parent=61
PHP_INI 등에 설정 되어 있는 register_globals가 off로 되어 있으면
export( http://kr.php.net/manual/kr/function.extract.php,
http://kr.php.net/manual/kr/function.import-request-variables.php)
하거나 반드시 $_POST[] 형식으로 써야 합니다.
http://kr.php.net/manual/kr/security.globals.php
http://kr.php.net/manual/kr/language.variables.external.php
http://kr.php.net/manual/kr/configuration.directives.php#ini.variables-order
참고 하세요.
export( http://kr.php.net/manual/kr/function.extract.php,
http://kr.php.net/manual/kr/function.import-request-variables.php)
하거나 반드시 $_POST[] 형식으로 써야 합니다.
http://kr.php.net/manual/kr/security.globals.php
http://kr.php.net/manual/kr/language.variables.external.php
http://kr.php.net/manual/kr/configuration.directives.php#ini.variables-order
참고 하세요.
자세하고 깊이있는 답변들 감사드립니다.