Подтвердить что ты не робот

(PHP) Как правильно уничтожить cookie сеанса?

Я пытаюсь правильно выйти из администратора. Вот моя функция:

function logout()
{
    $_SESSION = array(); //destroy all of the session variables
    if (ini_get("session.use_cookies")) {
        $params = session_get_cookie_params();
        setcookie(session_name(), '', time() - 42000,
            $params["path"], $params["domain"],
            $params["secure"], $params["httponly"]
        );
    }
    session_destroy();
}

В принципе, как только я аутентифицирую пароль, я установил сессию как действительную (всего 1 пользовательский итог). Теперь, когда администратор выходит из системы, я хочу уничтожить текущий сеанс, а также уничтожить куки файл, чтобы они не могли просто вернуться на страницу администратора, используя сохраненный файл cookie сеанса в браузере. но мой код не работает. Я удаляю logout, и я могу просто вернуться к странице администратора. однако, если я удалю свои файлы cookie, функциональность прекрасна. так что случилось с функцией удаления cookie здесь?

4b9b3361

Ответ 1

Возможно, ваша проблема не в файле cookie, а в браузере, показывающем кешированную версию вашей страницы администратора. Может ли это быть? Если он исчезнет, ​​когда вы нажмете F5, возможно, это так. Это можно отсортировать, установив правильные заголовки cache-control.

Отметьте этот вопрос SO о том, как настроить кеширование. Вопрос в том, что в точности наоборот (заставляя браузеры кэшировать), но вы поймете, что нужно изменить, чтобы отключить кеширование.

Ответ 2

Если вы действительно хотите охватить все базы, попробуйте сделать:

setcookie (session_id(), "", time() - 3600);
session_destroy();
session_write_close();

Это должно препятствовать дальнейшему доступу к данным сеанса для остальной части выполнения PHP. Браузер все равно может показать, что установлен файл cookie, но $_SESSION super будет пустым.