[PHP-users 23256]session_set_save_handlerとsession.use_trans_sidの共存について

Masayuki Tadano tadano @ d-product.co.jp
2004年 9月 9日 (木) 19:59:31 JST


但野と申します。

セッション情報をDB(MySQL)に保存するために、

session_set_save_handler

で、作成した関数を定義し、実際に DB に保存されることは確認で
きました。

また、今までの file 形式では、use_trans_sid = 1 にすることで、
一部の携帯電話のように、Cookie を保存しないクライアントでも
URL ReWriting で、セッション管理が出来ることも確認して(という
よりも実際に動かして)います。

問題は、この2つの機能を同時に使った場合に、セッション管理が
出来なくなってしまうことです。

具体的には、

    function sess_write( $id, $sess_data )
    {
        global $sess_db;

        return $sess_db->write( $id, $sess_data );
    }

    $rtn = session_set_save_handler
    (
        "sess_open",
        "sess_close",
        "sess_read",
        "sess_write",
        "sess_destroy",
        "sess_gc"
    );
# $sess_db は、実際に DB にデータを保存するクラスのインスタン
# スになっています。

となっている時に、この sess_write 関数の $sess_data に何も
渡って来ないように見受けられます。
クライアントで、Cookie を保存する(受け入れる)としていれば、
値が渡ってきますが、その際にでも、URL の部分に、PHPSESSID 
を付加させていると、やはり空のデータが渡ってくるようです。

なにかこれらに関して情報をお持ちの方はいらっしゃいませんでし
ょうか。
# もちろん私の基本的な間違いも含めてですが。

確認したバージョンは、
4.2.3 multibyte( 4.2.4-dev )
4.3.8
になります。



-- 
Masayuki Tadano <tadano @ d-product.co.jp>



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