0

ブラウザとのセッションの設定を解除できないという不明な問題が発生しています。

すべてのリクエストをチェックする私のコードは次のとおりです。

if (isset($_SESSION["logid"])) {
    $log = TRUE;
    $logid = $_SESSION["logid"];
    $session_id = $_SESSION["sid"];
} else {
    $log = FALSE;
}
if (!isset($_COOKIE["cook"])) {
    if ($log) {
        unset($_SESSION["logid"]);
        unset($_SESSION["sid"]);
        $log = false;
    }
    $expire = time() + 60 * 60 * 24 * 30 * 2;
    $data = array(
        "ip" => $_SERVER['REMOTE_ADDR'],
        "browser" => $_SERVER['HTTP_USER_AGENT'],
        "create_time" => $now
    );
    $result = $db->insert("cookies", $data);
    $cookie_id = $db->lastid;
    $cookie_id = my_encrypt($cookie_id);
    setcookie("cook", $cookie_id, $expire, "/");
} else {
    $cookie_id = $_COOKIE["cook"];
}

ログアウトするためのコードはここにあります

unset($_SESSION["logid"]);
unset($_SESSION["sid"]);

私はcookという名前のCookieを設定解除/期限切れにしたくありませんが、Cookieが手動で削除された場合、またはその他の理由で作成したいので、最初のブロックのコードでそれが行われます。

4

1 に答える 1

0

問題を理解しているかどうかはよくわかりませんが、これが役立つかもしれません。すべてのブラウザー インスタンス (ウィンドウまたはタブ) は、同じ Cookie jar を共有します。これが「実生活」ではめったに問題になることはありませんが、開発者は多くのタブを開いている可能性があるため、開発者に大混乱をもたらします。Cookie を変更するアプリケーション (ログインやログアウトなど) をテストする場合は、ブラウザーのすべてのインスタンスを閉じて、1 つのインスタンスのみを開いてからテストする必要があります。

于 2012-12-17T16:32:36.907 に答える