PHP > Tips > PEAR HTTP_Sessionを利用してDBを用いたセッション管理
2006年03月10日
PEAR HTTP_SessionでDBを使用する際のメモ。
使用バージョン
HTTP_Session-0.5.1
依存パッケージ
DBでセッション管理を行う場合は バージョン1.7.6以降のPEAR DBが必要。
セッションテーブルの準備
ダウンロードした圧縮ファイルを解凍後
HTTP_Session-0.5.1/docs/sessiondata.sqlに書かれたSQL文を使用して
DBにテーブルを作成する。
MySQLの場合はそのまま使用できる。
他のDBの場合は書き換える必要があると思う。
インストール
include_pathが通ってる場所、
もしくはHTTP_Sessionを使用するスクリプトと同じディレクトリにHTTPフォルダを用意。
作成したHTTPディレクトリにHTTP_Session-0.5.1以下のファイルをコピーする。
ただし、docsディレクトリは必要ない。
ファイル階層は以下のようになる。
HTTP/Session.php
HTTP/Session/Container.php
HTTP/Session/Container/DB.php
HTTP/Session/Container/MDB.php
HTTP/Session/Container/MDB2.php
使用方法
まずはincludeする。
require_once 'HTTP/Session.php';
セッションコンテナの生成
//mysqlのDSN
$dsn = 'mysql://root:password@localhost/test';
/**
先にDBに接続しておきたい場合
require_once 'DB.php';
$db =& DB::connect('mysql://root:password@localhost/test');
$dsn =& $db;
*/
/**
第一引数には'DB'を指定、
第二引数にはオプションを配列で指定。
オプションの詳細
・'dsn'にはDSNを指定した文字列、もしくはPEAR DBのオブジェクト。
・'table'にはDBのセッション管理を行うテーブル名、
sessiondata.sqlをそのまま使用していれば'sessiondata'になる。
・'autooptimize'にはテーブルの最適化を自動で行うかをbooleanで指定。
テーブル最適化はガベージコレクトが呼ばれ度に実行される。
*/
HTTP_Session::setContainer('DB', array('dsn' => $dsn,
'table' => 'sessiondata'
'autooptimize' => false));
セッション開始する前に行う設定
//TransSIDを使用するならtrue、使わないならfalse HTTP_Session::useTransSID(false); //クッキーを使用するならtrue、使用しないならfalse HTTP_Session::useCookies(true);
セッション開始
/**
第一引数にはセッション名、デフォルトは'SessionID'
第二引数にはセッションIDを指定する、
省略すれば自動でランダムな文字列が指定される
両方省略しても問題ない
*/
HTTP_Session::start('sessionID',uniqid('MyID'));
セッションの有効期限の指定
セッション開始後に指定しなければならないみたい。
引数にはUNIXタイムスタンプを指定する
/** セッションの最終的な有効期限の指定 一度設定すると変更出来ない */ HTTP_Session::setExpire(time() + 60*60); /** セッションの一時的な有効期限の指定 一時的な有効期限は更新出来るので、 一定時間何もしなければ自動的にセッション切断 という処理に利用する。 */ HTTP_Session::setIdle(time() + 60*10);
あとはHTTP_Sessionのメソッドを利用して、
セッション変数の登録・削除、
セッションの破棄等を行う。
HTTP_Session-0.5.1/docs/のサンプルが書かれてるので
大体の使い方はそれを見れば分かると思う。
よく使われると思うメソッドは次の項目に記す。
主なメソッド
clear()
セッション変数をすべて破棄する。 ただし、HTTP_Sessionの内部で使用されている'__HTTP_Session_Info'は削除されない。
destroy()
セッションを破棄する
get(string $name, [mixed $default = null] )
$_SESSIONから第一引数に指定した名前の値を取得する。
第二引数にデフォルトの値を指定することで、
$_SESSIONに指定した変数が存在しない場合に
$_SESSIONに第一引数で指定した名前でデフォルト値を
定義した上で、デフォルト値を返してくれる。
set( string $name, mixed $value)
$_SESSIONに第一引数で指定した名前と第二引数で指定した値を定義する。 第二引数にNULLを指定すれば、$_SESSIONから第一引数の名前の値を削除する。 返り値は新しく値を定義する前の値が返ってくる。
isExpired()
setExpire()で指定した有効期限が切れてるかどうかを返す。 有効期限が切れていればtrue、切れてなければfalseを返す。
isIdle()
setIdle()で指定した有効期限が切れているかどうかを返す。 有効期限が切れていればtrue、切れてなければfalseを返す。
updateIdle()
現在の時間を元にsetIdle()指定した有効期限を伸ばす。
isNew()
新しいセッションかどうかを返す。 新しいセッションであればtrue、継続してるセッションであればfalseを返す。
posted by 37to at : 15:14 | コメント (0) | トラックバック (0)
コメント
投稿する
トラックバック
トラックバックURI
一覧
この記事に対するトラックバックはまだありません。

この記事に対するコメントはまだありません。