私は数日を費やし、たくさん検索しました。こことBing経由で、http: //php.net/manual/en/ref.session.phpの公式PHPページを完全に調べました。
-- すべてのコメント、すべての関数。
しかし、何も役に立ちませんでした。絶対の。
必要なものは 1 つだけです。
SESSION が閉じられた後に何らかの関数を呼び出します (たとえば、ユーザーがブラウザーを閉じた場合)。
ポイントは次のとおりです: AGAIN --- ユーザーがエージェントを閉じた後に関数を呼び出す --- つまり、セッション ID は無効になります
そのため、古いスタイルのアプローチ、つまりデフォルトのセッション ハンドラをオーバーライドする方法を試してみました。
経由、
session_set_save_handler("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc");
次のようになります。
function sess_close() {
print "Session closed.\n";
return true;
}
function sess_read($sess_id) {
print "Session read.\n";
print "Sess_ID: $sess_id\n";
return '';
}
function sess_write($sess_id, $data) {
print "Session value written.\n";
print "Sess_ID: $sess_id\n";
print "Data: $data\n\n";
return true;
}
function sess_destroy($sess_id) {
print "Session destroy called.\n";
return true;
}
function sess_gc($sess_maxlifetime) {
print "Session garbage collection called.\n";
print "Sess_maxlifetime: $sess_maxlifetime\n";
return true;
}
ただし、これは、ユーザーがブラウザーを閉じたときにも機能しません。なぜこれがうまくいかないのですか?