2014-01-23 2 views
4

Это мой сценарий:Выход PHP скрипт

<?php 
    // If the user is logged in, delete the session vars to log them out 
    session_start(); 
    if (isset($_SESSION['user_id'])) { 
    // Delete the session vars by clearing the $_SESSION array 
    $_SESSION = array(); 

    // Delete the session cookie by setting its expiration to an hour ago (3600) 
    if (isset($_COOKIE[session_name()])) {  setcookie(session_name(), '', time() - 3600); } 

    // Destroy the session 
    session_destroy(); 
    } 

    // Delete the user ID and username cookies by setting their expirations to an hour ago (3600) 
    setcookie('user_id', '', time() - 3600); 
    setcookie('username', '', time() - 3600); 

    // Redirect to the home page 
    $home_url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/index.php'; 
    header('Location: ' . $home_url); 
?> 

Я не могу выйти, как только зарегистрированным на сайте. Мне действительно нужны файлы cookie, или я могу это принять?

+2

Если вы не используете файлы cookie в javascript на стороне клиента, вы можете просто использовать сеанс PHP и избегать куки-файлов. – developerwjk

+0

Я раньше не пользовался файлами cookie. Я просто начинаю сеанс на каждой странице, а при выходе из системы уничтожаю сеанс. Это только я. – WreithKassan

+0

Мне нравится WreithKassan, что идея лучше – user2544765

ответ

11

Попробуйте более простой подход, уничтожить все куки сессии

session_start(); 
session_destroy(); 
$home_url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/index.php'; 
header('Location: ' . $home_url); 
+3

Спасибо. Это сработало – user2544765

+0

Сработало, спасибо, Адам! – Sashi

0

«Для того, чтобы убить сессию в целом, как для входа пользователя вне, идентификатор сессии должен быть снята с охраны. Если печенье используется для распространять идентификатор сеанса (поведение по умолчанию), тогда cookie сеанса должен быть удален. Для этого может использоваться setcookie(). " см: http://us1.php.net/session_destroy и: http://us1.php.net/manual/en/function.session-id.php «Осторожно ли НЕ отключенный весь $ _SESSION с $ (в отключенном _ SESSION), так как это приведет к отключению регистрирующего сеансовым переменным через $ _SESSION суперглобального.» см: http://us2.php.net/manual/en/function.session-unset.php

1

Я рекомендую к использованию этого метода,

<?php 
//User session in ['user'] 
if($_SESSION['user_id']){ 
    session_start(); 
    session_unset(); 
    session_destroy(); 
    session_write_close(); 
    setcookie(session_name(),'',0,'/'); 
    session_regenerate_id(true); 
} 
?> 

я рекомендую вам с помощью этого метода , почему? потому что этот метод использует true destroy, delete cookie in browser и new set ID of session сеанса в PHP

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