|
8.3 セッションの入り口ページへのジャンプ
■セッションの入り口ページ
複数のPHPファイルで一つのセッションを構成する場合に、セッションの入り口になるPHPファイルをある特定のファイルにしたい場合があります。たとえば、ログオンのチェックを行うとか、氏名を記入してもらってはじめて、その他のPHPファイルにアクセスできるようにしたい場合などです。
このような場合は、ユーザがセッションの入り口となるPHPファイル以外のファイルにいきなりアクセスしてきた場合は、自動的にセッションの入り口のページにジャンプするようにします。
サンプルをリストsession_ent.phpとにリストsession_ent_a.php示します。リストsession_ent.phpはセッションの入り口となるファイルの例です。リストsession_ent_a.phpはセッションの入り口でないその他のファイルの例です。
リスト session_ent.php
<?php
// セッションの開始
session_start();
?>
<html>
<head>
<title>session_ent.php</title>
<!-- セッションの入り口ページ -->
</head>
<body>
<?php
print "session_id = " . session_id() . "<br>";
// セッションIDの出力
print '<br>$_POST[] の内容の確認;<br>';
print_r($_POST);
print "<br>";
print '<br>$_COOKIE[] の内容の確認;<br>';
print_r($_COOKIE);
print "<br>";
if (isset($_POST["name"])) {
$name = $_POST["name"];
$_SESSION["s_name"]=$name; // セッション変数の登録
print "ようこそ!" . $_SESSION["s_name"] . "さん。<br>";
print '$_SESSION[]の内容の確認;<br>';
print_r($_SESSION); // セッション変数の出力
print "<br>";
?>
<!-- hiddenコントロールによるセッションIDの引渡し -->
<form action="session_ent_a.php" method="post">
<input type="hidden" name="<?=session_name()?>"
value="<?=session_id()?>">
<input type="submit" value="次ページ">
</form>
<?php
} else {
?>
<form method="post">
氏名を記入してください。<br>
氏名:<input size="30" type="text" name="name"><br>
<input type="submit" value="登録">
</form>
<?php
}
?>
</body>
</html>
リスト session_ent_a.php
<?php
// セッションの継続
session_start();
// セッション変数に値がない場合は、セッションの入り口ページにジャンプ
if (! isset($_SESSION["s_name"])) {
$_SESSION = array(); // すべてのセッション変数のクリア
session_destroy(); // セッション情報を破棄
$url="http://" . $_SERVER['HTTP_HOST'] . "/php/8/session_ent.php";
header("Location: " . $url);
}
?>
<html>
<head>
<title>session_ent_a.php</title>
<!-- セッションの継続 -->
</head>
<body>
次のページです。<br>
<?php
print "session_id = " . session_id() . "<br>";
print '$_GET[] の内容の確認;<br>';
print_r($_GET);
print '<br>$_POST[] の内容の確認;<br>';
print_r($_POST);
print '<br>$_SESSION[]の内容の確認;<br>';
print_r($_SESSION);
print "<br>";
print '<br>$_COOKIE[]の内容の確認;<br>';
print_r($_COOKIE);
print "<br>";
?>
氏名は[<?=$_SESSION["s_name"]?>]ですね。<br>
</body>
</html>
いきなりsession_ent_a.phpファイルにアクセスしても次図のsession_ent.phpファイルに自動的にジャンプします。

氏名を記入して「登録」ボタンをクリックすると、次図のページが表示されます。「次ページ」ボタンをクリックします。

今度は、氏名が登録されセッション変数に格納されているので、session_ent_a.phpファイルへのアクセスが可能となります。
|