PHP에서 세션과 폼
두 개의 PHP 파일이 있다고 가정해 봅시다.
파일 test1.php 에 사용자에게 두 개의 숫자를 묻는
폼을 배치해 보겠습니다:
<form method="GET">
<input name="num1">
<input name="num2">
<input type="submit">
</form>
같은 파일에 폼 처리 코드를 배치합시다. 이 코드에서 입력 필드의 데이터를 세션에 기록할 것입니다:
<?php
session_start();
if (!empty($_GET)) {
$_SESSION['num1'] = $_GET['num1'];
$_SESSION['num2'] = $_GET['num2'];
}
?>
중요한 뉘앙스: 파일에서 폼 처리 코드는 폼 자체보다 앞에 위치해야 합니다. 이유: 이 코드에서 우리는 세션을 작업하므로, 그 전에는 화면에 어떠한 출력도 있어서는 안 되기 때문입니다.
이제 파일 test2.php 에서
세션에 저장된 숫자들의 합을 구해 봅시다:
<?php
if (!empty($_SESSION)) {
echo $_SESSION['num1'] + $_SESSION['num2'];
}
?>
이 모든 것이 어떤 순서로 작동해야 할까요? 먼저 사용자가
페이지 test1.php 에 접속하여 폼을 작성하고
버튼을 누릅니다. 그 후 다시 test1.php 페이지로 오지만,
이번에는 전송된 폼 데이터와 함께입니다. 이때 사용자는
폼 데이터를 세션에 기록하는 조건문 안으로 들어갑니다.
그런 다음 사용자는 수동으로
페이지 test2.php 에 접속해야 합니다 - 그리고 거기서 입력한
숫자들의 합을 보게 될 것입니다.
의문을 가질 수 있습니다: 왜 이렇게 복잡하게 할까요?
폼을 바로 test2.php 페이지로 보낼 수도 있었을 텐데.
문제는 이 경우 편리한 점은 폼 자체와 폼 처리 코드가
한 페이지에 배치된다는 것입니다.
물론 항상 편리한 것은 아니지만, 때로는 필요할 때가 있습니다.
한 페이지에서 폼을 사용하여 사용자의 성, 이름, 나이를 묻습니다. 이 데이터를 세션에 기록하세요. 다른 페이지에 접속할 때 이 데이터를 화면에 출력하세요.