2017-02-16 18 views
1

я начинаю сессию следующей командой:

session_start(); 

, когда пользователь входит в систему I сохранить информацию этого пользователя в $_SESSION с помощью следующего кода:

$_SESSION["logged_in_user"]=$username; 
$_SESSION["logged_in_status"]="logged in"; 
$_SESSION["logged_in_business_id"]=$business_id; 
$_SESSION["logged_in_business"]=$business_name; 

и когда пользователь выходит из системы I выполните следующие команды, чтобы очистить $_SESSION:

setcookie("PHPSESSID", "", time()-3600, "/"); 
$_SESSION=array(); 
session_destroy(); 
session_write_close(); 

сейчас когда я проверяю $_SESSION после выхода из системы и до входа в систему, результатом является пустой массив(), что и есть то, что должно быть. Но как только я войти $_SESSION не только показывает информацию, которую я сохраненное в нем, но и пустые значения с заполненными клавишами, как, например:

Array(
[logged_in_user] => aristocraticmasterminder 
[logged_in_status] => logged in 
[logged_in_business_id] => us-000000001 
[logged_in_business] => Microsoft PLC Limited 
[RoleID] => 
[RoleName] => 
[RoleDuty1] => 
); 

Эти клавиши не имеют никакого значения, сохраненные в $_SESSION соответствующие им , I session_start(); в верхней части каждой страницы, а следовательно, и на странице выхода из системы до session_destroy(); Я думаю, что это имеет какое-то отношение к файловому файлу PHPSESSID, который сохраняется в моем браузере. Как я могу очистить эти пустые ключи и просто сохранить данные, сохраненные после session_start();?

+0

ли вам 'session_start();' ', прежде чем $ _SESSION = массив(); session_destroy(); 'когда они выходят из системы? – AbraCadaver

+0

Да I session_start(); перед входом в систему и session_destroy(); во время выхода из системы –

+0

Можете ли вы показать минимальный код рабочего кода? –

ответ

0

попробовать это

unset($_SESSION['name']); 

How to remove a variable from a PHP session array

+0

это означает, что я должен очистить все переменные из массива $ _SESSION, как это. В переменной $ _SESSION хранится много переменных, и если да, то в чем необходимость session_destroy(); –

0

Reverse вашу последовательность разрушения сессии.

Изменение:

$_SESSION=array(); 
session_destroy(); 

To:

session_destroy(); 
$_SESSION=array(); 
+0

Нет, это не сработало. Я думаю, что это имеет какое-то отношение к файловому файлу PHPSESSID, знаете ли вы, как я могу заставить этот файл cookie истечь? –

+0

Thats bugging me .. если вы установите $ _SESSION в пустой массив, все должно исчезнуть! что произойдет, если вы отмените ($ _ SESSION)? – raidenace

+0

Я исследовал его, он имеет какое-то отношение к файловому файлу PHPSESSID. Можете ли вы рассказать мне, как это сделать. Пример здесь: http://7php.com/php-5-3-how-to-completely-destroy-session-variables-in-php –