解 説

*解答はHTMLコード、HTML&PHPコードと書かれたところをクリックすると表示されます。

問題 次のサンプルのように「PHP実習 (2)入力フォームで入力されたデータを表示」を変更して、入力データを確認した上でデータを表示させるようにしましょう。
サンプル 入力フォームと確認ページ、そして最終表示のページ、3つのファイルを作成します。
HTMLフォーム
HTML&PHPコード(確認ファイル)
HTML&PHPコード(最終表示ファイル)

解説

変数に格納されたデータの寿命はそのページが表示されている間です。
確認用のページから最終表示のページまでデータを保持するためにセッションを利用します。

  1. session_start()関数でセッションを開始
  2. 次にスーパーグローバル変数$_SESSION[]にフォームから受け取ったデータを渡します。
    これでページをまたいでのデータ保持ができます。この際if制御文でデータの有無を確認の上で代入を行います。

    このif文は isset($_POST[‘name’]) === TRUE を使って条件判定をしています。
    isset()は引数に指定した変数が存在していればTRUEを返します。この場合は$_POST[‘name’])に値が格納されていたなら$_SESSION[‘name’]にその値を格納します。
  3. 次は最後の表示用のファイルです。次の部分を書き換えます。

    $_POST[]を$_SESSION[]として確認用のページでセッションを利用して保存したデータを取り出します。
  4. 最後にセッションを終了する関数をbodyの終了タグの前に入れます。

さて、ここで問題がひとつ出てきます。確認画面から最終画面まではデータを保持することができたのですが、もし確認画面でミスを発見してもとの入力画面に戻った時です。
この状態でしたら最初の入力画面に戻ると全てのデータが消えてしまいます。ユーザーは再び最初からの入力になってしまいます。
確認画面から入力画面に戻ってもデータが消えない方法を考える必要がでてきます。
次の実習でそれを実現してみましょう。