print по-прежнему записывает старое значение переменной сеанса после уничтожения

Я использую некоторые переменные сеанса. Когда я выхожу из системы, функция show_number должна записать 0 число, но это не так.

выход.php:

<?php
session_start();
session_destroy();
require_once('upper.php');
show_number(); //this function is declared on upper.php
?>

индекс.php:

<?php
$_SESSION['var'] = 1;
echo "<a href="logout.php">Logout</a>
?>

верхний.php:

function show_number() { // shows value of $_SESSION['var'];
if (isset($_SESSION['var']))
  echo "1";
else
  echo "0";
}

И проблема в том, что когда я нажимаю ссылку «Выход», эхо по-прежнему пишет номер 1, и мне нужно перезагрузить страницу, чтобы увидеть значение 0.

Ваше здоровье


person Tukkan    schedule 28.01.2013    source источник


Ответы (1)


Глобальный объект $_SESSION не будет очищен session_destroy:

Он не сбрасывает глобальные переменные, связанные с сеансом, и не сбрасывает файл cookie сеанса.

Чтобы очистить данные сеанса в вашем коде:

session_start();
session_destroy();
$_SESSION = array();

Или более тщательно удалить все данные сеанса (с той же страницы документации):

<?php
// Initialize the session.
// If you are using session_name("something"), don't forget it now!
session_start();

// Unset all of the session variables.
$_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();
?>
person Michael Robinson    schedule 28.01.2013