2013-04-22 5 views
3

Моя страница выхода не разрушает сеанс. Я искал и читал об одной и той же проблеме, но ни одна из них не решила мою проблему.Выход не разрушает сеанс

Ниже представлена ​​моя страница выхода. Обратите внимание, что у меня есть два блока php, потому что между ними есть шаблон.

<?php 
    error_reporting(E_ALL^E_NOTICE); 
    session_start(); 
    $userid = $_SESSION['userid']; 
    $username = $_SESSION['username']; 
?> 
<?php 
    if($username && $userid) { 
    session_destroy(); 
    echo "You have been logged out.<a href='members.only.php'>My Logs.</a>"; 
    } 
    else 
    echo "You are not logged in."; 
?> 

Как видно после того, как я вышел из системы, у меня есть ссылка на страницу с ограниченными ресурсами членов, поэтому я могу проверить. Но она по-прежнему приветствует последнего пользователя, который был зарегистрирован в

+0

Это не дает вам какие-либо ошибки? используйте ini_set ('display_errors', 'On') – aleation

+0

Вы получили сообщение «Вы не вошли?»? – Shin

ответ

0

Попробуйте использовать:.

session_cache_limiter ('private_no_expire, must-revalidate'); 
4

Пожалуйста, прочитайте документацию по session_destroy:

session_destroy() destroys all of the data associated with the current session. It does not unset any of the global variables associated with the session, or unset the session cookie. To use the session variables again, session_start() has to be called.

Это означает, что вы должны сделать что-то другое. Например:

$_SESSION = array();

2

session_destroy() уничтожает все данные, связанные с текущей сессией. Он не отменяет никаких глобальных переменных, связанных с сеансом, или не удаляет cookie сеанса. Чтобы снова использовать переменные сеанса, необходимо вызвать session_start(). Вы можете прочитать больше об этом here

1

Заменить session_destroy часть с этим:

<?php 
     if($username && $userid) { 

    // 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 = array(); 
     echo "You have been logged out.<a href='members.only.php'>My Logs.</a>"; 
     } 
     else 
     echo "You are not logged in."; 
    ?> 
Смежные вопросы