セッション管理
 PHPのバージョン4以降では、洗練されたセッション管理の機構が用意されました。 これにより、通常はクッキー(Cookie)を意識しなくてもセッションを通じて持続的なデータを持たせることが可能になっています。
 下の例は一般的なログイン画面のPHP文書です。 ログインがOKなら(というか、パスワード認証は全くしていないのですが)、 別のページへのリンクが表示されます。それをたどると、 このログイン画面で入力したユーザIDが確かに記憶されているかどうかを表示するものです。

<?
/* セッションを開始。セッション処理はHTTPヘッダの送信前に行わないと
 * いけません。*/
session_start();
/* セッションに変数を登録 */
session_register("student_id");
?>
<? header("Content-type: text/html;charset=EUC_JP"); ?>
<html><head><title>ログイン</title></head>
<body bgcolor="white">
<?
if(isset($HTTP_POST_VARS["student_id"])){
    /* パスワードのチェックはしていません(-_-;) */
    $student_id = trim($HTTP_POST_VARS["student_id"]);
    $password   = trim($HTTP_POST_VARS["password"]);

    if(empty($student_id) || empty($password)){
?>
        <h1>おおっと</h1>
        入力が不完全です。受講生IDとパスワードを入力して下さい。
<?
    }
    else{
?>
        <h1>ログインしました。</h1>
        ようこそ、<?= $student_id ?>さん。<br>
        <a href="session-main.php">メインページへ</a><br>
        <a href="session-login.php">戻る</a>
<?
    }
}
else{
?>
<h1>ログインフォーム</h1>
受講生IDとパスワードを入力して下さい。
<form action="session-login.php" method="post">
受講生ID:
<input type="text" name="student_id"><br>
パスワード:
<input type="password" name="password"><br>
<br>
<input type="submit" value="ログイン">
<input type="reset"  value="クリア">
<br>
</form>
<?
}
?>
</body></html>


 そのページがセッション機構を利用する場合、 まず初めに組み込み関数session_start を使います。 これは、 HTTPヘッダの送信前に行う必要があるので注意が必要です。 通常は冒頭でいきなり行うことになるはずです。
 セッションを通じて保持させたいデータを格納するための変数、 略してセッション変数は、 (どんな略し方やねん)組み込み関数 session_registerで登録します。 これは引数に文字列としての変数の名前を渡します。 より簡単に言うと、$をつけてはダメということですね。
session_start();
session_register("student_id");
セッション変数に実際に値をセットするときに必要な処理は特にありません。 普通のPHP変数と同じように代入すればOKです。
$student_id = "(default)";

 さて今度は、そのめでたくログインできたあかつきに、 リンクをたどられた先のページです。こちらでは、 セッションに記憶されている変数から値を読み出して、 確かに覚えていることを確認しています。

<?
session_start();
header("Content-type: text/html;charset=EUC_JP");
?>
<html>
<head><title>セッションメインページ</title></head>
<body bgcolor="white">
<?
if(empty($student_id)){
?>
    <h1>おおっと</h1>
    ログインしていないのでこのページのサービスはご利用できません。<br>
    <a href="session-login.php">こちら</a>でログインを行ってください。<br>
<?
}
else{
?>
    <h1>メインメニュー</h1>
    <?= $student_id ?>さんが只今利用できるサービスは次の通りです。
    <br>
    <a href="disabled-kakunin.php">受講の確認・変更</a><br>
    <a href="disabled-seiseki.php">成績管理</a><br>
    <a href="disabled-schedule.php">スケジュール</a><br>
    <br>
    <a href="session-login.php">ログイン画面に戻る</a><br>
<?
}
?>
</body></html>


今度もsession_start を初めにコールする必要があります。後は、 何の前触れもなくセッション変数を参照することができます。
    <?= $student_id ?>さんが只今利用できるサービスは次の通りです。

Java Top
(first uploaded 2001/12/24, KQ Taura)

e[NECir Yahoo yV LINEf[^[z500~`I
z[y[W NWbgJ[h COiq@COsI COze