PHPにおけるセッションとフォーム
2つのPHPファイルがあるとします。ファイル
test1.php に、ユーザーに2つの数値を
尋ねるフォームを配置しましょう:
<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 ページに
送信することもできたはずです。このケースでの利点は、
フォーム自体とその処理コードが同じページに配置されることです。
もちろんこれは常に便利とは限りませんが、時には必要とされることがあります。
1つのページでフォームを使用して、ユーザーに 姓、名、年齢を尋ねてください。これらのデータを セッションに記録してください。別のページに アクセスした際に、これらのデータを画面に表示してください。