Доброго времени суток. Итак ситуация. Пользователь заполняет форму, на которой есть инпуты и селекты. Я хочу всё, что пользователь заполнил, записать в сессию. Делаю так Код (Text): if($_POST['reason']=='search'){session_start(); foreach($_POST as $key=>$value)$_SESSION[$key]=$value;} Но в результате имею следующее сообщение об ошибке из другого скрипта, который подключается к этой же сессии. Код (Text): Warning: session_start() [function.session-start]: Node no longer exists in Соответственно из сессии ничего прочитать нельзя. Из-за чего может возникать такая проблема
Сходил по ссылке, но ничего вразумительного г-да Полнай и Натан Фритц ничего мне не смогли сообщить. Они склоняются к тому, что это баг PHP, но тогда почему в том же PHP 5 у меня спокойно сессии работали на локалхосте в других проектах и спокойно потом переносились на хостинг? Из-за особенностей именно этого проекта (требуется статический IP-адрес для внешних запросов) я не могу потестить на локалхосте и отлаживаю всё на удалённом сервере, который имеет нужный мне статический IP. Странно ещё другое. Ошибка проявляется не сразу. После того, как я сохранил все переменные формы в сессию, я создаю на клиенте новое окно. Код (Text): $Scr='<script language="JavaScript">var mywindow=window.open("http://t-season.ru/temp/1/tours.php");</script>'; echo($Scr); В вызываемом таким образом скрипте тоже стартует сессия, но она пустая, т.к. ни одна из переменных формы не сохранилась. Переменные с формы точно пришли, проверил записью в файл. На хостинге для сессий используются куки. Возникает резонный вопрос, при создании в браузере нового окна, это окно отсылает на сервер куку или нет. В опере я чётко вижу, что кука получена и всю информацию о ней. Меня сильно смущает параметр Only sent to creator, установленный в yes. Под создателем куки подразумевается любой скрипт хоста или только скрипт с тем же именем, что и создатель куки? После повторного сабмита формы и вылазит вышеупомянутая ошибка, причём как в скрипте обработки формы, так и вызванном из этого скрипта новом окне. Так что пока что мне совершенно непоянтно откуда у этой проблемы растут ноги и что с ней делать. Подскажите, кто что может знать об этом.
Была такая ситуация.. я тоже новичок.. попробуйте объявлять функцию session_start() в самом самом начале кода.
Дело оказалось в том, что на хостинге стояло register_globals=on. Оказалось, что такая настройка с SimpleXML и сессиями не сочетается и вот почему. При запуске сессии, в сессию записываются все переменные, включая объекты. А затем объект SimpleXML по понятной причине не может корректно прочитаться из сессии. Пришлось отказаться от стандартных сессий и пользоваться собственными на базе MySQL.
Это-то понятно. Но мне эти объекты в сессию засовывать и не надо было. Достаточно было скалярных переменных. Просто я писал модуль для движка, который без register_globals=on работать не может, а меня об этом заранее не предупредили. Пришлось переделывать на базу данных, хотя хотел ограничиться встроенными сессиями