Как мне убить сессию PHP? - PullRequest
2 голосов
/ 21 ноября 2010

Я пишу сайт социальной сети и пытаюсь выяснить сессию PHP.В верхней части страницы входа в систему я вызываю session_destroy (), и я вызываю session_start () на странице, где новые пользователи официально зарегистрированы как пользователи, и на домашней странице пользователя.Когда пользователь выходит из системы, он связывается с домашней страницей, на которой есть session_destroy, но затем я могу войти в систему, как если бы пользователь только что вышел из системы, независимо от того, какое имя пользователя или пароль я ввел.Я впервые работаю с сессиями, поэтому мне интересно, куда я должен поместить session_destroy, чтобы он фактически уничтожал сессию при выходе из системы.

Ответы [ 2 ]

5 голосов
/ 21 ноября 2010

Используйте session_destroy для уничтожения данных сеанса и session_unset для очистки соответственно переменной $_SESSION.

Кроме того, после попытки аутентификации вызовите session_regenerate_id(true), чтобы изменить идентификатор текущего сеанса и уничтожить данные сеанса, которые все еще связаны со старым идентификатором сеанса.

0 голосов
/ 04 апреля 2019

Лучший способ - следовать инструкции . Вот пример кода, который стирает любые переменные сеанса, cookie сеанса и затем сам файл сеанса:

<?php

// Unset all of the session variables.
$_SESSION = array();

// Delete the session cookie.
// Note: This will destroy the session, and not just the session data!
if( ini_get( "session.use_cookies" ) ) {
    $params = session_get_cookie_params();

    setcookie(
      session_name()
      , ''
      , time() - 42000
      , $params[ "path"     ]
      , $params[ "domain"   ]
      , $params[ "secure"   ]
      , $params[ "httponly" ]
    );
}

// Finally, destroy the session.
if( session_status() === PHP_SESSION_ACTIVE ) { session_destroy(); }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...