하나의 PHP 파일에서의 양식 처리
이전 강의에서 우리의 양식은 한 페이지에 있었고,
다른 페이지로 전송되었습니다.
사실 이것은 필수적이지 않습니다. 만약
action 속성을 비워두거나 완전히 제거하면,
양식은 이 동일한 페이지로 전송됩니다.
작동 방식: 처음 페이지를 방문할 때 우리는 양식에 데이터를 입력하고 버튼을 누릅니다. 그 후 페이지가 새로 고침되고 그 코드는 다시 실행되지만 이번에는 양식 데이터와 함께 실행됩니다.
예를 들어 살펴보겠습니다. 우리에게 하나의 파일에 양식과 그 처리가 있다고 가정해 보겠습니다:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
var_dump($_GET);
?>
처음 페이지를 방문할 때 함수 var_dump
는 빈 배열을 출력할 것입니다. 반면 양식을 제출한 후에는
양식 데이터를 출력할 것입니다. 즉, 첫 번째
방문 시 $_GET 은 비어 있고, 두 번째 방문 시
- 양식 데이터를 포함하게 됩니다.
이로 인해 문제가 발생할 수 있습니다. 예를 들어, 양식에 숫자를 입력하고 그 숫자들의 합계를 화면에 출력하려 한다고 가정해 봅시다:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
echo $_GET['test1'] + $_GET['test2'];
?>
이 경우, 처음 페이지를 방문했을 때
우리는 $_GET 배열이 비어 있는데 그 요소들에 접근하려고 해서 발생하는
PHP 오류를 보게 될 것입니다.
여기서 말씀드리자면, 브라우저에서 오류가 나타나지 않을 수도 있습니다. 이 경우 PHP 오류 출력이 활성화되어 있는지 확인하고, 또한 처음 페이지를 방문하는 중이며 주소 표시줄에 양식 데이터가 없는지 확인하십시오.
문제를 해결해 봅시다. 이를 위해 양식이 전송되었는지 확인하는 조건을 추가하겠습니다.
예를 들어, $_GET 이
비어 있지 않은지 확인할 수 있습니다. 만약 $_GET 이 비어 있지 않다면 -
양식이 전송된 것이므로 합산을
수행할 수 있습니다. 그렇지 않으면 아직
페이지에 처음 방문한 것이므로 합산이 수행되지
않습니다. 자, 수정된 코드입니다:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
if (!empty($_GET)) {
echo $_GET['test1'] + $_GET['test2'];
}
?>
사용자에게 성, 이름, 중간 이름(있는 경우)을 물어보세요. 양식 제출 후 입력된 데이터를 화면에 출력하십시오.