[PHP-users 21538]PHPのセッションとクッキーのあつかい

Takeo Shibata takeo @ hawaii.edu
2004年 5月 3日 (月) 21:11:34 JST


はじめまして
最近、PHPをはじめたJAVAっ子です
PHP4.3.6でセッションで認証しようとしてますが苦労してます。
私の理解ではセッションは発行されたセッション自体が、

サーバー側にリストとして登録されていて、同時にクライアントにもおくられるとい
うものでした。

test.php

session_cache_limiter ("nocache");
session_start();

if (session_id()==$_COOKIE['PHPSESSID'])
 echo "パスしたよ”;
}
else{
 echo "はじめてだな!セッションチケットをあげよう!”
}

でセッション認証を確認しているのですがおもうようにいきません。

実験1
test.phpにアクセスする。
   " はじめてだな!セッションチケットをあげよう!"
が表示される。OK。

リフレッシュすると、クッキーのセッションIDが比較されて
  "パスしたよ”
が表示される。OK!

このときつかったセッションIDを記録して、ブラウザ(IE6.0)を閉じる
#この時点でこのセッションIDは無効になるはず!

実験2
別途HTMLで作成した
JAVASCRIPTでクッキーに実験1で記録した値をクッキーにいれてtest.phpにアクセス
してみる
するとなんと、
  "パスしたよ”
表示される。

実験3
さらに文字数が同じででたらめな値
それでパス・・・


セッションをスタートさせたときにサーバーのほうに記録される値(セッションID)
は
どのように記録して、引き出せばいいのでしょうか?
自分でデータベースやファイルに手動で書き込んで記録しないといけないのでしょう
か?

どのように、セッションIDを使って認証をしたらいいのでしょうか?
セッションIDのサーバーへの記録のしかた、
記録した(改ざん可能なクライアントからのクッキー情報ではなくサーバーに記録し
た)セッションIDの、取り出し方
ブラウザを閉じたときにセッションIDを無効にする方法

こてこてやれば一回一回、サーバー側のデータベースにIDと作成、更新日を記録して
クライアントからのクッキーをその情報と照合することはできますが、
そのようなことをせずにすむ方法があるならそうしたいです。

また、サーバー側でセッションの有効期限を自動でコントロールする方法があるで
しょうか?
とくにJAVAのHASH TABLEのようにメモリー上のテーブルをおけるよう
な機能があるとすごく
いいとおもっていたのですが

すみません、初歩の質問かもしれませんがどうかご教授よろしくお願いいたします

TAK



PHP-users メーリングリストの案内