Эта тема на forum.dklab.ru


McAndy: Вопрос по сессиям, переменная сессии не видна после возврата на страницу
Суть проблемы в следующем:
На странице регистрируется переменная сессии (например, $_SESSION['idip']=10). Затем, когда пользователь нажимает кнопку Submit в форме, запускается обработчик, находящийся в другом php-файле. В этом файле переменная сессии idip видна (Echo $_SESSION['idip'] выводит правильное число). Но далее, если по ссылке вернуться на первую страницу, idip оказывается не установленной. При попытке проверить isset($_SESSION['idip']) получаю false. При попытке вывести echo $_SESSION['idip'] получаю пусто.
Может кто-то подскажет, в чем тут суть?
Демидов Алексей:
Думаю стоит регистрировать переменные в сессии таким путем:


$idip = 10;
session_register("idip");


Кстати буду благодарен, если кто объяснит почему попросту нельзя занести переменную в глобальный массив $_SESSION;
McAndy:
Думаю стоит регистрировать переменные в сессии таким путем:


$idip = 10;
session_register("idip");


Кстати буду благодарен, если кто объяснит почему попросту нельзя занести переменную в глобальный массив $_SESSION;

Через session_register я тоже пробовал результат тот же. Я просто ни одной разумной причины не могу придумать, почему такая простейшая ситуация не работает.
WingedFox:
Демидов Алексей
Вообще-то надо RTFM иногда.
http://ru2.php.net/session_register - устаревшая функция.

McAndy
У Вас обе страницы на одном домене сидят?
Посмотрите, передаётся ли вообще ID сессии при возврате на страницу.
McAndy:

McAndy
У Вас обе страницы на одном домене сидят?
Посмотрите, передаётся ли вообще ID сессии при возврате на страницу.

Да, обе страницы на одном домене, собственно лежат рядышком в одной папке. Я, честно говоря, думал, если на одну из страниц ID сессии передался, то уж и обратно передастся.
А как вообще определить, передался ID сессии или нет?
В моей ситуации, он должен передаться через куки. Но как понять произошла передача или нет, я не знаю...
WingedFox:
McAndy
Можете использовать для просмотра заголовков, например, Проксомитрон.
Edain:
У меня была подобная проблема - я в каждом скрипте вставил строчки:
ini_set("session.use_trans_sid", true);
session_start();
После этого данные в сессии заносил простым присваиванием элементу массива $_SESSION. По ссылкам ходил "туда" на три уровня и обратно - все работает.
ToxaP:
2 Демидов Алексей

Можно использовать глобальный массив $_SESSION и я возьму на себя грех и скажу, что даже нужно именно писать через $_SESSION!
А session register работает ток тогда когда register_globals в php.ini стоит On!
И по теории sessions_register делает ток ссылку на глобальную переменную!


$_SESSION[$name] =& $GLOBALS[$name];


Но мой совет всегда использовать через глобальный массив $_SESSION!
ToxaP:
2 McAndy

А у вас как я понимаю, проблема в том, что Куки у вас отключены!
А передача SID по ссылке выключена в php.ini!

Эта тема на forum.dklab.ru