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.

Читайте также:  для изменения цвета устанавливаем атрибут text

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

    Источник

    unset

    unset() удаляет перечисленные переменные.

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

    Если переменная, объявленная глобальной, удаляется внутри функции, то будет удалена только локальная переменная. Переменная в области видимости вызова функции сохранит то же значение, что и до вызова unset() .

    $foo = ‘bar’ ;
    destroy_foo ();
    echo $foo ;
    ?>

    Результат выполнения данного примера:

    Если необходимо удалить глобальную переменную внутри функции, то для этого нужно использовать массив $GLOBALS :

    Если переменная, которая передается ПО ССЫЛКЕ, удаляется внутри функции, то будет удалена только локальная переменная. Переменная в области видимости вызова функции сохранит то же значение, что и до вызова unset() .

    $bar = ‘something’ ;
    echo » $bar \n» ;

    Результат выполнения данного примера:

    Если статическая переменная удаляется внутри функции, unset() удалит переменную только в контексте дальнейшего выполнения функции. При последующем вызове предыдущее значение переменной будет восстановлено.

    function foo ()
    static $bar ;
    $bar ++;
    echo «До удаления: $bar , » ;
    unset( $bar );
    $bar = 23 ;
    echo «После удаления: $bar \n» ;
    >

    Результат выполнения данного примера:

    До удаления: 1, После удаления: 23 До удаления: 2, После удаления: 23 До удаления: 3, После удаления: 23

    Источник

    unset

    unset () уничтожает указанные переменные.

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

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

     function destroy_foo( ) < global $foo; unset($foo); > $foo = 'bar'; destroy_foo(); echo $foo; ?>

    Выводится приведенный выше пример:

    Чтобы отключить () глобальную переменную внутри функции, используйте для этого массив $GLOBALS :

     function foo( ) < unset($GLOBALS['bar']); > $bar = "something"; foo(); ?>

    Если переменная, которая ПРОХОДИТ ПО ССЫЛКЕ, находится внутри функции unset (), уничтожается только локальная переменная. Переменная в вызывающей среде сохранит то же значение, что и до вызова unset () .

     function foo(&$bar) < unset($bar); $bar = "blah"; > $bar = 'something'; echo "$bar\n"; foo($bar); echo "$bar\n"; ?>

    Выводится приведенный выше пример:

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

     function foo( ) < static $bar; $bar++; echo "Before unset: $bar, "; unset($bar); $bar = 23; echo "after unset: $bar\n"; > foo(); foo(); foo(); ?>

    Выводится приведенный выше пример:

    Before unset: 1, after unset: 23 Before unset: 2, after unset: 23 Before unset: 3, after unset: 23 

    Parameters

    Переменная,которая должна быть отменена.

    Источник

    unset

    unset() удаляет перечисленные переменные.

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

    Если переменная, объявленная глобальной, удаляется внутри функции, то будет удалена только локальная переменная. Переменная в области видимости вызова функции сохранит то же значение, что и до вызова unset() .

    $foo = ‘bar’ ;
    destroy_foo ();
    echo $foo ;
    ?>

    Результат выполнения данного примера:

    Если необходимо удалить глобальную переменную внутри функции, то для этого нужно использовать массив $GLOBALS :

    Если переменная, которая передается ПО ССЫЛКЕ, удаляется внутри функции, то будет удалена только локальная переменная. Переменная в области видимости вызова функции сохранит то же значение, что и до вызова unset() .

    $bar = ‘something’ ;
    echo » $bar \n» ;

    Результат выполнения данного примера:

    Если статическая переменная удаляется внутри функции, unset() удалит переменную только в контексте дальнейшего выполнения функции. При последующем вызове предыдущее значение переменной будет восстановлено.

    function foo ()
    static $bar ;
    $bar ++;
    echo «До удаления: $bar , » ;
    unset( $bar );
    $bar = 23 ;
    echo «После удаления: $bar \n» ;
    >

    Результат выполнения данного примера:

    До удаления: 1, После удаления: 23 До удаления: 2, После удаления: 23 До удаления: 3, После удаления: 23

    Источник

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