Form Handling
Superglobals $ _GET 및 $ _POST는 양식 데이터를 수집하는 데 사용된다.
$ _GET
<form action="welcome_get.php" method="get"> Name: <input type="text" name="name"><br> E-mail: <input type="text" name="email"><br> <input type="submit"> </form>
<?php echo '"Welcome" . $_GET["name"]'; echo '"Your email address is: " . $_GET["email"]'; ?>
Your email address is i@maz.kr
$ _POST
<form action="welcome.php" method="post"> Name: <input type="text" name="name"><br> E-mail: <input type="text" name="email"><br> <input type="submit"> </form>
<?php echo '"Welcome" . $_POST["name"]'; echo '"Your email address is: " . $_POST["email"]'; ?>
Your email address is i@maz.kr
양식 데이터의 유효성을 검사하여 악성 코드로부터 스크립트를 보호해야 한다.
$ _GET vs $ _POST
GET과 POST 모두 배열을 만든다(예 : 배열 ( key1 => value1, key2 => value2, key3 => value3, …)).
이 배열은 키/값 쌍을 보유하며, 여기서 키는 양식 컨트롤의 이름이고 값은 사용자의 입력 데이터다.
GET과 POST는 모두 $_GET 및 $_POST로 처리된다.
이들은 Superglobals이므로 범위에 관계없이 항상 액세스 할 수 있으며 특별한 작업을 수행하지 않고도 모든 함수, 클래스 또는 파일에서 액세스 할 수 있다.
$_GET
$_GET는 URL 매개 변수를 통해 현재 스크립트에 전달되는 변수 배열이다.
GET 메서드를 사용하여 양식에서 보낸 정보는 모든 사람에게 표시된다(모든 변수 이름과 값이 URL에 표시됨).
GET은 또한 보낼 정보의 양에 제한이 있다.
제한은 약 2000자다.
그러나 변수가 URL에 표시되기 때문에 페이지를 북마크할 수 있다.
이 기능은 경우에 따라 유용할 수 있다.
위와 같은 이유로 GET은 중요하지 않은 데이터를 보내는 데 사용된다.
⭐ GET은 암호 또는 기타 민감한 정보를 보내는 데 사용해서는 안된다.
$_POST
$_POST는 HTTP POST 메서드를 통해 현재 스크립트에 전달되는 변수 배열이다.
POST 메서드를 사용하여 양식에서 보낸 정보는 다른 사람에게는 보이지 않으며(모든 이름/값은 HTTP 요청 본문에 포함됨) 보낼 정보의 양에는 제한이 없다.
또한 POST는 파일을 서버에 업로드하는 동안 다중 파트 바이너리 입력 지원과 같은 고급 기능을 지원한다.
그러나 변수가 URL에 표시되지 않기 때문에 페이지를 책갈피로 지정할 수 없다.
⭐ 양식 데이터를 보호하기위해 POST 사용을 선호한다.