Apache+PHPによる+PostgreSQLによるWebアプリケーション
−入門編−
第8章 セッション管理

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ファイルへのアクセスが可能となります。

 


前へ | 目次へ |次へ  | YCポータルサイト

執筆 山田豊通
更新日:2003年6月4日