1

私は数日を費やし、たくさん検索しました。ここと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;
}

ただし、これは、ユーザーがブラウザーを閉じたときにも機能しません。なぜこれがうまくいかないのですか?

4

0 に答える 0