Как отлавить изменение переменной $_SESSION

4m@t!c

Александр
Как отлавить изменение переменной $_SESSION

1. Есть страница с формой.
2. Форма отсылает запрос на эту же страницу.
3. После передачи значений формы происходит присвоение переменной из $_GET - переменной $_SESSION и инициализация переменной класса.
PHP:
   if (isset($_GET["oenumsearch"]))
   {
      if($_GET["oenumsearch"] == "")
         return false;
      $_SESSION["s_oenumsearch"] = $_GET["oenumsearch"];
      $page_html->oenum_partsearch = $_SESSION["s_oenumsearch"];
   }
Переменная $_SESSION["s_oenumsearch"] честно инициализируется. Генерится страница.
4. Методом GET я опять передаю запрос к этой странице, но не из формы, а из урлы.
По идее, переменная $_SESSION["s_oenumsearch"] должна остаться, но ее нет. Есть другие элементы массива $_SESSION - все кроме той. что мне надо, все - которые были созданы на других страницах.
Подскажите, как мне отлавить Присвоение(потерю) переменной???
Вставил print_r($_SESSION) в начале и в конце страницы. При повторном заходе на странице по урле я теряю эту переменную, хотя накануне она честно видна в списке переменных массива.
 

Фанат

oncle terrible
Команда форума

4m@t!c

Александр
Автор оригинала: Фанат
1. проверить, работают ли сессии. Как это сделать - написано здесь: PHP FAQ: Сессии. Подробное описание работы и объяснение механизма.
2. проверить - нет ли одноименной глобальной переменной или не включены ли регистер глобалс.
3. проверить руки и свой код
1. Может, не работает... Я как раз накануне прочитал этот FAQ и подумал, что не нужно исолпьзовать ни куки ни GET.
т.е. я отключил механизм сессий? но почему инициализируются остальные элементы $_SESSION.
И еще у меня в php.ini session.auto_start = 1. Я на каждой странице пишу session_start(); и на странице появляется мессага, что сессия уже запущенна.
session.use_cookies = 0
session.use_trans_sid = 0
2. register_globals = Off
3. С руками все нормально. Насчет проверить - это Вы хорошо придумали...;). Не могу отследить где переменная теряется.
Ставлю print_r($_SESSION) сразу после хэдера и вконце страницы. Я то вижу конечную страницу, которую сгенерил сервер. все отработалось до того как выплюнулся хэдер. А до проверки, что я написал - ничего нет. кроме проверку логина и пароля юзера.
 

Фанат

oncle terrible
Команда форума
подумал, что не нужно исолпьзовать ни куки ни GET.
Не понял.
А что тогда использовать? Телепатию?
Я на каждой странице пишу session_start();
А зачем, если автостарт?
session.use_cookies = 0
session.use_trans_sid = 0
Опять не понял.
а идентификатор как передается?
но почему инициализируются остальные элементы $_SESSION.
Не могу знать. Судя по установкам - не должны.
Поскольку проблема явно в коде, то сначала надо запустить чистый пример, узнать, работают ли сессии вообще.
 

4m@t!c

Александр
Я - ламер..;))), точней ;(((
Действительно, что бы идентифицировать сессии - PHP придется воспользоваться телипатией. Омстальные переменные попадали в массив $_SESSION - потому что во время проверки - перепрописывались (а в моем случае инициализировали элементы массива) в $_SESSION, вот поэтому они и передавались на новую страницу.
Огромное спасибо Вам, Фанат.
 
Сверху