Я пытаюсь правильно выйти из администратора. Вот моя функция:
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 здесь?
Возможно, ваша проблема не в cookie, а в браузере, показывающем кешированную версию вашей страницы администратора. Может ли это быть? Если он исчезнет, когда вы нажмете F5 , возможно, это так. Это можно отсортировать, установив правильные заголовки cache-control
.
Проверьте этот вопрос SO на вопрос о том, как настроить кеширование. Вопрос в том, что в точности наоборот (заставляя браузеры кэшировать), но вы поймете, что нужно изменить, чтобы отключить кеширование.
Если вы действительно хотите охватить все базы, попробуйте сделать:
setcookie (session_id(), "", time() - 3600); session_destroy(); session_write_close();
Это должно препятствовать дальнейшему доступу к данным сеанса для остальной части выполнения PHP. Браузер все еще может показать, что установленный файл cookie установлен, но $ _SESSION super будет пустым
Просто подсказка для других, у которых есть проблемы с истечением сеанса cookie:
PHP – почему я не могу избавиться от этого cookie id сессии?
Всегда используйте session_get_cookie_params (), как в ответе на вопрос в приведенной выше ссылке.