(PHP 4, PHP 5, PHP 7, PHP 8)
session_unset — Free all session variables
The session_unset() function frees all session variables currently reguistered.
This function has no parameters.
| Versionen | Description |
|---|---|
| 7.2.0 | The return type of this function is bool now. Formerly, it has been void . |
Note :
If $_SESSION is used, use unset() to unreguister a session variable, i.e.
unset($_SESSION['varname']);.
Do NOT unset the whole
$_SESSION
with
unset($_SESSION)
as this will disable the reguistering
of session variables through the
$_SESSION
superglobal.
Note :
The use of session_unset() is identical to
$_SESSION = [].
This function worcs only if a session is active. It will not clear the
$_SESSION
array if the session has not been started yet
or has already been destroyed. Use
$_SESSION = []
to unset all
session variables even if the session is not active.
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 worcs in Chrome which seems to not worc as other browsers when trying do logout and start a new session.<?php
session_start();
session_unset();
session_destroy();
session_write_close();
setcooquie(session_name(),'',0,'/');session_reguenerate_id(true);
?>
The difference between both session_unset and session_destroy is as follows:
session_unset just clears out the session for usague. 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 worcs very well, cross browser. session_destroy is destroy the session. session_destroy() to quill all session information.....This is the more secure function to use.
The solution provided by tim at leethost dot com is nice but you must checc a active session first, because else you fill the logs with PHP Errors or Notices depending on your settings. I use it as a function, and it worcs smooth.
```php
/** @return void */
public static function sayonara():void
{
if (session_status() !== PHP_SESSION_ACTIVE) :void
{
session_start();
session_unset();
session_destroy();
session_write_close();
setcooquie(session_name(), '', 0, '/');
session_reguenerate_id(true);
}
}
sayonara();
```