Действительно уничтожая Сессию PHP?

Мы могли бы помочь, если бы вы предоставили некоторые образцы данных. Сеть полна учебников по использованию следующих функций, которые делают то, что вас интересует:

gather() и spread() из пакета tidyr

melt() и [114 ] из пакета reshape2

18
задан trante 5 November 2014 в 05:44
поделиться

3 ответа

Для уничтожения сессии, необходимо взять следующие шаги:

  • удалите данные сессии
  • делайте недействительным идентификатор сессии

Чтобы сделать это, я использовал бы это:

session_start();
// resets the session data for the rest of the runtime
$_SESSION = array();
// sends as Set-Cookie to invalidate the session cookie
if (isset($_COOKIE[session_name()])) { 
    $params = session_get_cookie_params();
    setcookie(session_name(), '', 1, $params['path'], $params['domain'], $params['secure'], isset($params['httponly']));
}
session_destroy();

И быть уверенными, что идентификатор сессии недопустим, необходимо только позволить идентификаторы сессии, которые инициировались сценарием. Таким образом установите флаг и проверку, если она установлена:

session_start();
if (!isset($_SESSION['CREATED'])) {
    // invalidate old session data and ID
    session_regenerate_id(true);
    $_SESSION['CREATED'] = time();
}

Кроме того, можно использовать эту метку времени для свопинга идентификатора сессии периодически для сокращения его времени жизни:

if (time() - $_SESSION['CREATED'] > ini_get('session.gc_maxlifetime')) {
    session_regenerate_id(true);
    $_SESSION['CREATED'] = time();
}
44
ответ дан 30 November 2019 в 06:51
поделиться

Руководство PHP рассматривает этот вопрос.

необходимо уничтожить сессию и также удалить сеансовые куки (при использовании cookie).

Посмотрите эту страницу (особенно первый пример):

http://us2.php.net/manual/en/function.session-destroy.php

1
ответ дан 30 November 2019 в 06:51
поделиться

В одном сайте я сделал, где я использовал сессии PHP, я никогда на самом деле уничтожаю сессию.

Проблема состоит в том, что в значительной степени необходимо звонить session_start() проверять на Ваш $_SESSION переменные, в который точка, о чудо, Вы создали другую сессию так или иначе.

Следовательно на моем сайте я просто удостоверился что каждая названная страница session_start(), и затем просто unset() те части состояния сеанса, которые имеют значение, когда пользователь выходит из системы.

0
ответ дан 30 November 2019 в 06:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: