2015-06-26 3 views
0

Я новичок в PHP сессии и ищу некоторую помощь со следующим:PHP: Как правильно уничтожить сеанс, удалить данные сессии и неустановленные переменные сессии

я начать сеанс на странице следующим образом, который работает как предполагалось до сих пор:

session_start(); 
// ... 
$_SESSION["User"]["login"] = "loggedIn"; 
$_SESSION["User"]["username"] = $email; 

Теперь, если пользователь хочет выйти я также хочу, чтобы уничтожить эту сессию (. включая удаление его данных и снятия с охраны его переменные и т.д.). При поиске инструкций по этому вопросу я натолкнулся на следующее: PHP Manual, но Я не уверен, как применить это, и я не понимаю, что линии в Ini-части действительно делают.

Может ли кто-нибудь помочь мне с этим и, возможно, также предоставить несколько кратких объяснений по этому вопросу?

Мой текущий код уничтожить сессию:

session_start(); 
// ... 
$_SESSION = array(); 
if (ini_get("session.use_cookies")) { 
    $params = session_get_cookie_params(); 
    setcookie(session_name(), '', time() - 42000, 
     $_SESSION["User"]["login"] = "", 
     $_SESSION["User"]["username"] = "" 
    ); 
} 
session_destroy(); 

Большое спасибо заранее.

+0

unset ($ _ SESSION) попробовал этот – Ramki

+0

Спасибо за это. – TaneMahuta

ответ

1

Это то, что PHP руководство говорит

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

Извлекает PHP Manual

Вы можете использовать unset($_SESSION);

ИЛИ

$_SESSION = array(); 

Это также будут опущены Session данные

+0

Большое спасибо - это здорово! В моем случае может случиться так, что один пользователь зарегистрирован двумя разными адресами электронной почты для разных целей, поэтому я хочу разрешить им выйти из одного электронного письма, а затем войти в систему с другим, не закрывая браузер. Я хотел бы пойти с таким подходом, поэтому рассмотрев вышеизложенное, я просто использую unset ($ _ SESSION); для переменных, а затем session_destroy(); для фактического сеанса? Я хочу убедиться, что и сеанс, и его переменные уничтожены/удалены. – TaneMahuta

+0

yes..definitely, вам просто нужно использовать функцию 'unset', а затем' session_destroy() '. Это сделает работу – Abhinav

1

Вам не нужно уничтожать $ _SESSION, PHP Garbage Collector делать это автоматически.

Просто установите $_SESSION["User"]["login"] = false и везде вам нужно проверить вход пользователя, проверить

if ($_SESSION["User"]["login"]) { 
    // do something 
} else { 
    echo "You don't have access"; 
} 
+0

Спасибо за это. – TaneMahuta