Доброго времени суток! Нужна ваша помощь по вопросу удалении сессии. Да, я знаю про session_destroy(), но я хотел бы не просто удалить содержимое файла сессии на сервере, но и вообще убрать какую - то связь файла сессии на сервере с пользователем. Теоретически, это возможно, если отправить Код (Text): setcookie(session_name(),''); . Т.е. теперь при заходе пользователя на страницу, PHP больше не найдет свою сессию и создаст новую, а старая просто будет валяться на сервере. Так вот это у меня и не выходит, при отправке Код (Text): setcookie(session_name(),''); кука не изменяет свое значение на пустую строку, она вообще ничего не делает и кука остается в браузере с содержимым сессии. Ради эксперимента вместо пустой строки я отправил рандомное значение, к примеру, "qwerty", и после этого создалась еще одна кука с именем session_name() и значением "qwerty". Код (Text): <? header('Content-Type: text/html; charset=utf-8'); session_start(); $qwestions = parse_ini_file('qwestions.ini'); $i = 0; $res = 0; foreach ($qwestions as $answer){ $i++; $q = 'q'.$i; if (($_SESSION[$q]) == $answer) $res += 10; } setcookie(session_name(),''); ?> <br/> <? var_dump($_SESSION[q1]); ?> //выводит то, что лежит в сессии <br/> <? var_dump($_COOKIE[session_name()]); ?> // string 'fuivut46es17bbge0vb2d1lkv0' (length=26) , т.е. кука не обнулена. А теперь эксперимент с другим значением: Код (Text): <? header('Content-Type: text/html; charset=utf-8'); session_start(); $qwestions = parse_ini_file('qwestions.ini'); $i = 0; $res = 0; foreach ($qwestions as $answer){ $i++; $q = 'q'.$i; if (($_SESSION[$q]) == $answer) $res += 10; } setcookie(session_name(),'qwerty'); ?> <br/> <? var_dump($_SESSION[q1]); ?> //выводит то, что лежит в сессии <br/> <? var_dump($_COOKIE[session_name()]); ?> // string 'qwerty' (length=6) , т.е. кука с сессией не обнулена + создана еще одна кука с именем session_name(), а именно PHPSESSID, и значением 'qwerty'. Объясните, пожалуйста, почему так происходит и помогите решить проблему или подскажите другое решение разрыва связи пользователя и файла сессии на сервере. Если понадобится, то версия PHP 5.4.26, сервер Apache 2.2.27
Как минимум, в целях обучения. Мне лично непонятно, почему код себя так ведет. Я думаю, все дело в каких-то тонкостях, которые я по неопытности не знаю, но в каких?
добавляешь данные в сессию, после этого удаляешь куку и читаешь данные из суперглобального массива $_SESSION. Ты ошибся в порядке действий. Данные сессии помещаются в $_SESSION при вызове session_start(), а записываются в файл (или другое хранилище) после завершения скрипта. Таким образом, хоть ты и удалил куку PHPSESSID, но данные-то в массиве остались. Вот они и выводятся. так попробуй: первый вызов — положить данные в сессию второй — удалить куку третий — получить данные из сессии разумеется, в шагах 2 и 3 добавлять данные в сессию не надо
Вообще меня не правильно понял и подсказал совсем не то. Большое спасибо! Попробовал поработать с этим и все получилось! Тему можно считать закрытой.