[PHP-users 2161] Re: セッションの基本的な質問

KOYAMA Tetsuji php-users@php.gr.jp
Wed, 19 Sep 2001 00:34:18 +0900


  小山です。間違えて変なエンコーディングで出しちゃったのでもう一度。

At Tue, 18 Sep 2001 04:56:11 +0900,
tyunn wrote:
>   IDとパスワードを入力しログインする場合
>   1回目(初めてページを訪れた)
>        入力されたid、パスワードをセッションにそれぞれ
>        変数id、password として登録
>        session_register("id");
>         session_register("password");
>        echo sesstion_id();   <-- *1 
>   2回目以降(このページを訪れた)
>        入力されたID = $id
>        入力されたパスワード = $password 
>        であれば、一回目のログイン者と合致
>        echo sesstion_id();  <-- *2
>        *1と*2は同じ

  やはりどうもセッションIDに関して誤解があるような気がします。

  セッションIDはクッキー等の手段でブラウザに渡されるものです。順番に説
明しましょう。

  1) クライアントは ユーザ idpassword を入力

  2) サーバはそのユーザ id, password で認証し、正しいユーザであればセッ
     ションを生成。セッションにユーザ id を登録しておく。

  3) サーバはセッション ID をクッキーとしてクライアントへ返す。

  4) クライアントは別のページから何かの値を入力。クライアントは送信の
     際に、セッション ID をクッキーとしてサーバに送る。

  5) サーバは受け取ったセッション ID からセッションを再構築。

  6) サーバスクリプトは、再構築されたセッションからユーザ id を取り出
     す。入力値はそのユーザに対する処理として行われる。

このうち 3), 5) は session_start() で自動的に行われます。

  4) 以降のページアクセスは特にユーザ id を入力していませんが、サーバ
   側ではセッション ID に対応したユーザ id を保持しいているので、見か
   け上最初のログイン状態が継続していることになります。これがセッショ
   ンの通常の使い方です。

>   こんな解釈でよいでしょうか?調べているのですが、なかなかセッションに
>   関しての素朴な?(基礎的な?)理解ができていない・・・
>   ご存知の方参考になるサイトがありましたらお教えください。

  拙作になりますが、PHPカンファレンス2001での発表「PHP4のセッションの
仕組みと応用例」の資料を http://php.hoge.org/ に置いています。また現在
発売中の WEB+DB Press Vol.4 にも、「PHPこども電話相談室」という記事で
PHP4 のセッションに関して詳しく説明しています。

-- 
	小山 哲志@ビート・クラフト
	koyama@beatcraft.com
	koyama@hoge.org