Php сброс всех сессий

session_unset

Функция session_unset() удаляет все зарегистрированные переменные текущей сессии.

Список параметров

У этой функции нет параметров.

Возвращаемые значения

Возвращает true в случае успешного выполнения или false в случае возникновения ошибки.

Список изменений

Примечания

Замечание:

При использовании $_SESSION для удаления переменных сессии, то используйте функцию unset() . Например, unset($_SESSION[‘varname’]); .

НЕ удаляйте весь массив $_SESSION с помощью unset($_SESSION) , так как это приведёт к невозможности регистрации новых переменных через суперглобальный массив $_SESSION

Замечание:

Использование функции session_unset() идентично $_SESSION = [] .

Функция работает только в том случае, если сессия активна. Она не очистит массив $_SESSION , если сессия ещё не запущена или уже уничтожена. Используйте $_SESSION = [] для удаления всех переменных сессии, даже если сессия не активна.

User Contributed Notes 4 notes

I was having a problem clearing all session variables, deleting the session, and creating a new session without leaving old session stuff behind in all browsers. The below code is perfect for a logout script to totally delete everything and start new. It even works in Chrome which seems to not work as other browsers when trying do logout and start a new session.

session_start ();
session_unset ();
session_destroy ();
session_write_close ();
setcookie ( session_name (), » , 0 , ‘/’ );
session_regenerate_id ( true );
?>

The difference between both session_unset and session_destroy is as follows:

session_unset just clears out the session for usage. The session is still on the users computer. Note that by using session_unset, the variable still exists. session_unset just remove all session variables. it does not destroy the session. so the session would still be active.

Using session_unset in tandem with session_destroy however, is a much more effective means of actually clearing out data. As stated in the example above, this works very well, cross browser. session_destroy is destroy the session. session_destroy() to kill all session information. This is the more secure function to use.

note to Jason: I don’t know the exact mechanics of it (since I’m quite new to sessions) but I think you need to use session_unset() BEFORE you can use session_destroy() at all. I thought that session_unset() was for scripted variables, and session_destroy() just for anything saved on your side regarding the session.

The difference between both session_unset and session_destroy is as follows:

session_unset just clears out the sesison for usage. The session is still on the users computer. Note that by using session_unset, the variable still exists.

Using session_unset in tandem with session_destroy however, is a much more effective means of actually clearing out data. As stated in the example above, this works very well, cross browser:

I noticed that in firefox, one could simply use sesison_unset and the session would be cleared. When trying this on IE, I was horrified to find out that the data was still there, so I had to use session destroy.

  • Функции для работы с сессиями
    • session_​abort
    • session_​cache_​expire
    • session_​cache_​limiter
    • session_​commit
    • session_​create_​id
    • session_​decode
    • session_​destroy
    • session_​encode
    • session_​gc
    • session_​get_​cookie_​params
    • session_​id
    • session_​module_​name
    • session_​name
    • session_​regenerate_​id
    • session_​register_​shutdown
    • session_​reset
    • session_​save_​path
    • session_​set_​cookie_​params
    • session_​set_​save_​handler
    • session_​start
    • session_​status
    • session_​unset
    • session_​write_​close

    Источник

    session_destroy

    session_destroy() уничтожает все данные, связанные с текущей сессией. Данная функция не удаляет какие-либо глобальные переменные, связанные с сессией и не удаляет сессионные cookie. Чтобы вновь использовать переменные сессии, следует вызвать session_start() .

    Замечание: Нет необходимости вызывать session_destroy() в обычном коде. Очищайте массив $_SESSION вместо удаления данных сессии.

    Чтобы полностью удалить сессию, также необходимо удалить и её идентификатор. Если для передачи идентификатора сессии используются cookie (поведение по умолчанию), то сессионные cookie также должны быть удалены. Для этого можно использовать setcookie() .

    При включённой опции session.use_strict_mode, вам не нужно удалять устаревшие cookie идентификатора сессии. В этом нет необходимости, потому что модуль сессии не примет cookie идентификатора сессии, если с этим идентификатором сессии нет связанных данных, и модуль сессии установит новый cookie идентификатора сессии. Рекомендуется включать опцию session.use_strict_mode для всех сайтов.

    Немедленное удаление сессии может привести к нежелательным последствиям. При наличии конкурирующих запросов, другие соединения могут столкнуться с внезапной потерей данных сессии, например, это могут быть запросы от JavaScript и/или запросы из ссылок URL.

    Даже если текущий модуль сессии не поддерживает пустые cookie идентификатора сессии, немедленное удаление сессии может привести к пустым cookie идентификатора сессии из-за состояния гонки на стороне клиента (браузера). Это приведёт к тому, что клиент создаст множество идентификаторов сессии без необходимости.

    Чтобы этого избежать, необходимо установить в $_SESSION временную метку удаления и убрать доступ позже. Или удостовериться, что ваше приложение не имеет конкурирующих запросов. Это также относится к session_regenerate_id() .

    Список параметров

    У этой функции нет параметров.

    Возвращаемые значения

    Возвращает true в случае успешного выполнения или false в случае возникновения ошибки.

    Примеры

    Пример #1 Уничтожение сессии с помощью $_SESSION

    // Инициализируем сессию.
    // Если вы используете session_name(«something»), не забудьте добавить это перед session_start()!
    session_start ();

    // Удаляем все переменные сессии.
    $_SESSION = array();

    // Если требуется уничтожить сессию, также необходимо удалить сессионные cookie.
    // Замечание: Это уничтожит сессию, а не только данные сессии!
    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.use_strict_mode
    • session_reset() — Реинициализирует сессию оригинальными значениями
    • session_regenerate_id() — Генерирует и обновляет идентификатор текущей сессии
    • unset() — Удаляет переменную
    • setcookie() — Отправляет cookie

    User Contributed Notes 4 notes

    If you want to change the session id on each log in, make sure to use session_regenerate_id(true) during the log in process.

    session_start ();
    session_regenerate_id ( true );
    ?>

    [Edited by moderator (googleguy at php dot net)]

    It took me a while to figure out how to destroy a particular session in php. Note I’m not sure if solution provided below is perfect but it seems work for me. Please feel free to post any easier way to destroy a particular session. Because it’s quite useful for functionality of force an user offline.

    1. If you’re using db or memcached to manage session, you can always delete that session entry directly from db or memcached.

    2. Using generic php session methods to delete a particular session(by session id).

    $session_id_to_destroy = ‘nill2if998vhplq9f3pj08vjb1’ ;
    // 1. commit session if it’s started.
    if ( session_id ()) session_commit ();
    >

    // 2. store current session id
    session_start ();
    $current_session_id = session_id ();
    session_commit ();

    // 3. hijack then destroy session specified.
    session_id ( $session_id_to_destroy );
    session_start ();
    session_destroy ();
    session_commit ();

    // 4. restore current session id. If don’t restore it, your current session will refer to the session you just destroyed!
    session_id ( $current_session_id );
    session_start ();
    session_commit ();

    I’m using PHP 7.1 and received the following warning when implementing Example #1, above:

    PHP message: PHP Warning: session_destroy(): Trying to destroy uninitialized session in.

    What I discovered is that clearing $_SESSION and removing the cookie destroys the session, hence the warning. To avoid the warning while still keeping the value of using session_destroy(), do this after everything else:

    if (session_status() == PHP_SESSION_ACTIVE)

    All of a sudden neither session_destroy() nor $_SESSION=[] were sufficient to log out. I found the next to work:
    setcookie ( session_name (), session_id (), 1 ); // to expire the session
    $_SESSION = [];
    ?>

    • Функции для работы с сессиями
      • session_​abort
      • session_​cache_​expire
      • session_​cache_​limiter
      • session_​commit
      • session_​create_​id
      • session_​decode
      • session_​destroy
      • session_​encode
      • session_​gc
      • session_​get_​cookie_​params
      • session_​id
      • session_​module_​name
      • session_​name
      • session_​regenerate_​id
      • session_​register_​shutdown
      • session_​reset
      • session_​save_​path
      • session_​set_​cookie_​params
      • session_​set_​save_​handler
      • session_​start
      • session_​status
      • session_​unset
      • session_​write_​close

      Источник

      session_reset

      Функция session_reset() повторно инициализирует сессию, используя оригинальные значения, сохранённые в хранилище сессии. Эта функция требует наличия активной сессии и уничтожает все изменения в массиве $_SESSION.

      Список параметров

      У этой функции нет параметров.

      Возвращаемые значения

      Возвращает true в случае успешного выполнения или false в случае возникновения ошибки.

      Список изменений

      Смотрите также

      • $_SESSION
      • Опция конфигурации session.auto_start
      • session_start() — Стартует новую сессию, либо возобновляет существующую
      • session_abort() — Отменяет изменения в массиве сессии и завершает её
      • session_commit() — Псевдоним session_write_close

      User Contributed Notes 2 notes

      First of all you should execute this code :
      session_start ();
      $_SESSION [ «A» ] = «Some Value» ;
      ?>

      then you should execute this one :

      start_session ();
      $_SESSION [ «A» ] = «Some New Value» ; // set new value

      session_reset (); // old session value restored
      echo $_SESSION [ «A» ];

      //Output: Some Value
      ?>

      That is because session_reset() is rolling back changes to the last saved session data, which is their values right after the session_start().

      first create a session variable

      session_start ();
      $_SESSION [ «A» ] = «Some Value» ;
      echo $_SESSION [ «A» ];

      //if you need to rollback the session values after seting new value to session variables use session_reset()

      $_SESSION [ «A» ] = «Some New Value» ; // set new value

      session_reset (); // old session value restored
      echo $_SESSION [ «A» ];

Оцените статью