У меня возникли проблемы с уничтожением сеанса для выхода из системы. Когда я уничтожаю сессию, она продолжает возвращаться.Бессмертный сеанс PHP
код я использую выглядит следующим образом:
public function kill_login(){
global $response;
session_start();
$response->message = "Current session" . json_encode($_SESSION);
// Unset all of the session variables.
unset($_SESSION);
$_SESSION = array();
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();
session_write_close();
$response->message .= "Session Destroyed" . json_encode($_SESSION);
}
Он отвечает ниже
Это называется с ASync AJAX запрос затем перезагружает
$("<button>").text("Logout").click(function(){
var logOut = {
action:"logOut"
};
alert(SAJAX.getJSON(logOut,dataLoc).message);
location.reload();
})
(SAJAX.getJSON - это просто метод, который упрощает использование AJAX для стандартный запрос на мой, я использую его очень хорошо)
Затем страница перезагружается и, как-то сеанс все еще существует, я могу снова нажать кнопку выхода и все равно получить то же самое.
У меня только session_start()
используется в трех местах: проверка входа (устанавливает сеанс для страницы), вход в систему и уничтожение логина, поскольку это запрос AJAX.
Любые идеи ??
Редактировать: я скорректировал его, чтобы удалить второй session_start() и добавить write_close те же результаты.
Вы начали сеанс, затем вы его уничтожили, а затем снова запустили. Есть проблема. –
Вы начинаете сеанс на той же странице, где вы его отключили. – Phiter
Плюс, вы только начинаете сеанс, как только вызывается эта функция. Поместите 'session_start();' в качестве первой строки, * n'est-ce pas? * –