session_unset () против session_destroy () в PHP

Опубликовано: 2 Февраля, 2022

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

Функция session_destroy (): уничтожает все данные, связанные с текущим сеансом. Он не сбрасывает ни одну из глобальных переменных, связанных с сеансом, и не сбрасывает cookie сеанса.

Синтаксис:

 bool session_destroy (недействительно)

Функция session_unset (): удаляет только переменные из сеанса, а сеанс все еще существует. Обрезаются только данные.

Синтаксис:

bool session_unset( void )

Example 1: This example saving the session by using session.php file.

<?php
  
// Function to start session
session_start();
  
// Display the session id
echo session_id();
  
// Check the session name exists or not
if( isset($_SESSION["name"]) ) {
    echo "<br>" . "session is set.";
}
else {
    echo "<br>" . "session is destroyed";
}
  
$_SESSION["name"] = "GeeksForGeeks";
$_SESSION["email"] = "GeeksForGeeks@email.com" ;
  
?>

Выход:

Before using session_unset() function: Before using the session function it displaying the name and email.

<?php
  
// Function to start session
session_start();
   
// Check the session name exists or not
if( isset($_SESSION["name"]) ) {
    echo "session is set.";
}
else {
    echo "please set the session";
}
   
echo $_SESSION["name"]."<br>";
echo $_SESSION["email"]."<br>";
  
?>

Выход:

After using session_unset() function: This function destroys the variables like ‘name’ and ’email’ which are using.

<?php
  
// Function to start session
session_start();
   
// Check the session name exists or not
if( isset($_SESSION["name"]) ) {
    echo "session is set." ;
}
else {
    echo "session variables deleted";
}
  
echo $_SESSION["name"];
echo $_SESSION["email"];
  
// Use session_unset() function
session_unset();
  
?>

Выход:

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

Example: This example is used to destroying the session.

<?php
  
// Function to start session
session_start();
  
// Check the session name exists or not
if( isset($_SESSION["name"]) ) {
    echo "session is set."."<br>" ;
}
else {
    echo "session is destroyed"."<br>";
}
  
echo $_SESSION["name"]."<br>";
echo $_SESSION["email"]."<br>";
  
$_SESSION = array();
  
// If it"s desired to kill the session, also
// 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.
session_destroy();
  
?>

Выход:

При выполнении файла session.php вы можете видеть, что существует другой идентификатор сеанса, это означает, что предыдущий сеанс был уничтожен, и все переменные и файлы cookie также уничтожены. Поскольку все переменные уничтожены, PHP переходит к выходу состояния else, «сеанс уничтожен».

Примечание. Если вы хотите прервать сеанс, удалите также файл cookie сеанса. Это уничтожит сеанс, а не только данные сеанса.