プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になります。

セッション管理を session_set_save_handler を使って実装を進めていたのですが、

session_set_save_handler を使わない場合、
--------------------------------------
session_ start();
$_SESSION('a') = 'teststring_a';
session_ write_ close();
session_ start();
$_SESSION('b') = 'teststring_b';
session_ write_ close();
--------------------------------------
のように書いても問題なく
$_SESSION('a')
$_SESSION('b')
共に正常に書き込めていました。

ところが、
session_set_save_handler を定義した途端、
動かなくなってしまいました。
--------------------------------------
session_ start();
$_SESSION('a') = 'teststring_a';
session_ write_ close();
--------------------------------------
では正常に動作していました。

--------------------------------------
session_ start();
$_SESSION('a') = 'teststring_a';
session_ start();
session_ write_ close();
--------------------------------------
でも正常でした。

これは session_set_save_handler のバグか、仕様なのでしょうか?

以上です。
わかる方いましたら、よろしくご教授お願いしますm( __ __ )m

A 回答 (1件)

session_write_closeを行った後に、


再度session_set_save_handlerを叩く必要があるようです。
一度、error_reportingや、error_displayを表示するように設定してみていただくと、
二回目のsession_start時点で、エラーが発生しているのがわかります。
どうも、sessionをクローズするタイミングで自身で設定したハンドラも初期化されてしまうようです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます!

早速 session_set_save_handler の仕様を確認して試してみたところバッチリ理想の動きを示しました。

思わぬところでハマッってしまい助かりました^^
ありがとうございました('◇')ゞ

お礼日時:2009/09/09 22:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!