ソースコードに戻って
さて、前回はひたすらセッションの概要説明ばかりになってしまったけれど、今回は再び第7回のソースコードに戻って解説を続けていこうか。
- はーい。この2つのコードですね。
uranai_ask.php:
<?php
if (isset($_POST["uranai"])) {
// 全角のものを半角にする
$age = mb_convert_kana($_POST["age"], "a", "EUC-JP");
$error_message = array();
if (is_numeric($age) == false) {
$error_message[] = "年齢は数字で教えてください!";
} elseif ($age < 1 || $age > 120) {
$error_message[] = "年齢は1才から120才の範囲で入力してください!";
}
if (!count($error_message)) {
session_start();
$_SESSION["age"] = $age;
header("Location: uranai_result.php");
exit;
}
} else {
$age = 25;
}
?>
<html>
<body>
<?php
// エラーメッセージを出力する
if (count($error_message)) {
foreach ($error_message as $message) {
print($message);
}
}
?>
<form action="uranai_ask.php" method="post">
年齢を教えてください:
<input type="text" name="age"
value="<?php print(htmlspecialchars($age, ENT_QUOTES)); ?>">
<input type="submit" name="uranai" value="占う!">
</form>
</body>
</html>
uranai_result.php:
<?php
session_start();
if (!isset($_SESSION["age"])) {
header("Location: uranai_ask.php");
exit;
}
$sorry_message =
"ちょっとあなたの年齢は対象年齢に含まれていません・・・";
$uranai_message[1] =
"10代のあなたには、PHPをお守り代わりに勉強するのが良いみたい。";
$uranai_message[2] =
"20代のあなたには、趣味でPHPを使うと良いみたい。";
$uranai_message[3] =
"30代のあなたには、ビジネススキルとしてPHPを勉強すると良いみたい。";
$uranai_message[4] =
"40代のあなたには、PHPは新たなフロンティアとなるでしょう。";
$sedai = floor($_SESSION["age"] / 10);
?>
<html>
<body>
<?php
if (isset($uranai_message[$sedai])) {
print($uranai_message[$sedai]);
} else {
print($sorry_message);
}
?>
</body>
</html>
- 前回の説明を踏まえて、セッションについて理解できたかな?

- もちろんです。入力画面で年齢を聞いたら、その値を、セッション変数に保存して、結果画面で使うんですよね。
- その通り。セッション変数はサーバー側に保存されているから、PHPスクリプトから操作しない限り、その内容が書き換えられることはないんだ。これは、$_POSTや、$_GET変数がユーザーの入力次第ではどのような値でも取り得ることと比較して、信頼性が高い変数と言うことができる。高い安全性を必要とするデータを格納する場合には、セッション変数を使用するようにしよう。
- なるほどー、了解です!