2013-10-10 5 views
2

Когда я пытаюсь выйти с: session_destroy();, тогда это сработало. Но проблема в том, что у меня также есть корзина с сеансами. Так что session_destroy(); не вариант для меня. Когда я использую функцию unset($_SESSION['username']);, она кажется работающей. Но когда я вернусь к моей accountpage, я только что вернулся войти в мой выход из сценария выглядит следующим образом:..Сбой сеанса PHP или сеанс PHP-сеанса

<?php 
unset($_SESSION['username']); 
unset($_SESSION['id']); 

header('Location: index?page=home'); 
?> 

Я проверил этот кусок кода пользователь вошел в систему (Может кто-нибудь сказать мне, также или это безопасно?)

<?php if (!$_SESSION['username'] && !$_SESSION['id']){ ?> 
<?php header ('Location: index?page=home'); ?> 
<?php } ?> 

Это информация, которая вам нужна (я думаю). Если вам нужно больше, пожалуйста, спросите меня.

Итак, мой вопрос в короткой версии: как я могу уничтожить свою сессию, не разрушая сеанс моей корзины?

Спасибо, ребята.

ответ

4

Можете ли вы попробуйте session_write_close() здесь? Существует PHP-конфигурация, которая должна автоматически сделать это для вас после завершения скрипта, но ваш PHP может быть настроен по-разному.

<?php 
unset($_SESSION['username']); 
unset($_SESSION['id']); 

session_write_close(); 

header('Location: index?page=home'); 
?> 

Ради отладки вы могли бы попробовать это:

<?php 

echo $_SESSION['id'].' - '.$_SESSION['username']; 

if(!$_SESSION['username'] && !$_SESSION['id']){ 
    header ('Location: index?page=home'); 
} 

?> 
+0

Когда я использую эту функцию, она решает проблему: 'session_write_close();' Спасибо за вашу помощь! – Appel

+0

Добро пожаловать! Если вы хотите узнать, почему это происходит для вас, пожалуйста, прочитайте мой ответ из этого вопроса SO: http://stackoverflow.com/questions/19119354/is-each-session-call-is-separate-call-to- сервер/19119831 # 19119831 – MonkeyZeus

1

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

<?php 
session_start(); 

unset($_SESSION['username']); 
unset($_SESSION['id']); 

header('Location: index?page=home'); 
+0

У меня есть session_start(); в верхней части моего скрипта выхода. – Appel

+0

@Appel, потому что на самом деле все остальное выглядит разумно ... единственное, что я могу сделать - это угадать ... – bwoebi

0

в простой способ использовать

<?php 
session_start(); 
if(empty($_SESSION['user']) && empty($_SESSION['id'])) 
{ 
echo "please login"; 

} 

и unset использовать, чтобы сбросить переменную и session_destroy для уничтожения сессии укомплектовать, поэтому я предлагаю вам следует использовать и как:

<?php 
session_start(); 
unset($_SESSION['user']); 
unset($_SESSION['id']); 
session_destroy(); 
header("location:yourpage.com"); 
?> 
Смежные вопросы