目次
セッションを使う
複数回のアクセスを通じて特定のデータを保持する手段を実現する機能。
サーバ側にデータを保存する。
この機能を利用してウィザード形式のフォームを作る。
ウィザードとは対話形式のSTEP分割された形式。
コード
まずは一つ目の入力フォームを作る。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php require_once '../php_include/Encode.php'; session_start(); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>アンケートフォーム</title> </head> <body> <h1>アンケート</h1> <form method="POST" action="enquete2.php"> <div> <label for="name">名前:</label> <input type="text" name="name" value="<?php print(e($_SESSION['name'])); ?>" /> </div> <!-- 中略 --> <input type="submit" value="次へ" /> </form> </body> </html> |
続いて一つ目のフォームのデータをセッションに格納し、更に入力を促す二つ目のフォームを作成。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php require_once '../php_include/Encode.php'; session_start(); if (isset($_POST['name']) === TRUE) { $_SESSION['name'] = $_POST['name']; } if (isset($_POST['email']) === TRUE) { $_SESSION['email'] = $_POST['email']; } if (isset($_POST['sex']) === TRUE) { $_SESSION['sex'] = $_POST['sex']; } if (isset($_POST['zip']) === TRUE) { $_SESSION['zip'] = $_POST['zip']; } ?> <!-- 激しく中略 --> <div> <label for="message">サイトへのご意見:</label><br /> <textarea rows="5" cols="30" name="message"><?php print(e($_SESSION['message'])); ?></textarea> </div> <input type="hidden" name="quest_num" value="XXX00001" /> <input type="button" value="前へ" onclick="location.href='enquete1.php'"> <input type="submit" value="送信" /> </form> </body> </html> |
最後に二つ目のフォームデータを格納し、全ての結果を表示する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php require_once '../php_include/Encode.php'; session_start(); if (isset($_POST['age']) === TRUE) { $_SESSION['age'] = $_POST['age']; } <!-- 中略 --> ?> <!-- 中略 --> <body> <h1>ご回答ありがとうございました。</h1> <p>以下の内容で送信致しました。</p> <dl> <dt>名前:</dt> <dd><?php print(e($_SESSION['name'])); ?></dd> <!-- 中略 --> </dl> <? session_unset(); ?> </body> </html> |
require_once
指定ファイルの読み込みを行う。
今回はhtmlspecialcharsを返すファンクションeを定義したファイルを読み込んでいる。
指定ファイルの読み込みはマニュアルにもある通り、
他にrequire,include,include_onceがある。
session_start()
新しいセッションを開始、あるいは既存のセッションを再開する。
セッションを引き回すために入れている。
セッションを利用するページではすべからく呼び出すこと。
$_SESSION
スーパーグローバル変数。
セッション内でデータを持ちまわるための変数。
今回はPOSTデータをセッションに引き渡して全ての入力データを格納している。
isset
変数がセットされていて、NULL でないことを検査する。
今回はデータがあったらセッションに格納するという指示をしている。
session_unset()
全てのセッション変数を開放する。
破棄と開放の区別がイマイチな場合は下記サイトを参考にするとよいかもしれませぬ。僕はイマイチだったので。
実行画面(結果表示)
変数のスコープ
ここに来て急に解説が始まったので。
スコープ = 有効範囲
グローバル変数をスコープ外で使う場合は、変数の前にglobalをつけてグローバル変数のほにゃららを使いたい、と宣言しましょう。
1 2 3 4 5 6 7 8 |
<?php $x = 'グローバル変数'; function test() { global $x; echo $x; } test(); ?> |
コメント
No Trackbacks.