2013-03-21 3 views
0

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

Heres мой Логин файл

$_SESSION['id'] = $row['user_id']; 
    $_SESSION['username'] = $row['username']; 
    setcookie('id', $row['user_id'], time() + (60 * 60 * 24 * 2)); 
    setcookie('username', $row['username'], time() +(60 * 60 * 24 * 2)); 

Вот мой выход из системы файл

// if the user is logged in, delete the cookie to log them out 
    session_start(); 
    if (isset($_SESSION['id'])) { 
    $_SESSION = array(); 

    // delete the user id and the username cookie by setting their expirations to an hour ago (3600) 
    if (isset($_COOKIE[session_name()])) { 
     setcookie('session_name()', '', time() - 3600); 

    } 
    //destroy the session 
session_unset(); 
    session_destroy(); 
    } 

    //delete the user id and username cookies 
    setcookie('id', '', time() - 3600); 
    setcookie('username', '', time() - 3600); 
unset($_COOKIE['id']); 
unset($_COOKIE['username']); 
    unset($_SESSION['id']); 
    unset($_SESSION['username']); 
    // redirect to the home page 
    $home_url = 'http://page.com/'; 
    header('Location: ' . $home_url); 
    exit(); 

Вот код, который я есть на моей странице:

session_start();

// If the session vars aren't set, try to set them with a cookie 
if (!isset($_SESSION['id'])) { 
    if (isset($_COOKIE['id']) && isset($_COOKIE['username'])) { 
    $_SESSION['id'] = $_COOKIE['id']; 
    $_SESSION['username'] = $_COOKIE['username']; 
    } 
} 

Этот код отлично работает на домашней странице, но когда я попал в подкаталог, он вызывает случайную старую сессию.

ответ

1

Вместо того, чтобы просто разрушать сеансы, попробовали ли вы их сначала отключить, прежде чем уничтожить их?

Затем вызовите функцию session_destroy().

Кроме того, также я где-то читал (не могу вспомнить, где, к сожалению, может быть SO, даже ...), что неплохо хранить прямые результаты SQL ($ row ['id']) в печенье. Вероятно, лучше всего сохранить результат в $ _SESSION сначала, а затем сохранить эту $ _SESSION в cookie.

+0

Я думаю, что я понял свою проблему. У меня был отдельный логин из подкаталога, поэтому, когда я выхожу из своего домашнего каталога, по-видимому, это отдельно. Мне придется что-то выяснить из loggin in из подкаталога – mxcoop98

Смежные вопросы