[TC] php. потеря сессионной переменной при переходе на другую страницу
Здравствуйте, уважаемые!
Вот теперь могу привести часть кода файла login.php, где присваивается
значение сессионной переменной и происходит переход к тесту:
$_SESSION['UserDataString']=$fio.'|'.$email.'|+7'.$phone;
// переходим к тесту
header("location: http://$MyURL/test.php");
// echo '<a href="test.php">Начать тест</a>';
exit;
А вот начало отладочного кода файла test.php, где переменная не
обнаруживается:
if (!isset($_SESSION['UserDataString']))
{
echo 'Сессионная переменная UserDataString не установлена<br />';
}
Теперь комментарий. Если в файле login.php закомментировать header(),
раскомментировать и воспользоваться ссылкой на сценарий test.php - все
работает идиально. По-видимому, потеря происходит где-то в момент работы
функции header. У кого какие мысли будут на этот счет?
p.s. Лажа происходит исключительно на удаленном сервере. В denwer - все OK!
Телепрограмма для кабельных каналов:
http://samaraobs.ru/UserFiles/tv.html
Грызунов Александр. Самара.
области
Приветствую Iastreb.
if (!isset($_SESSION['UserDataString']))
{
echo 'Сессионная переменная UserDataString не установлена<br />';
}
Ну правильно. Дело в том, что информация о сессии передается либо через
куки либо посредством добавления переменной phpsessid к GET-части урла.
Если php настроен так, что сервер не отдает куки, либо браузер не
принимает их, соответственно идентификация сессии происходит только
через get-запрос.
На практике это выглядит так: при старте сессии сервер отправляет
клиенту заголовок, означающий, что к каждой ссылке и форме на странице
необходимо добавлять идентификатор сессии в переменной phpsessid.
соответственно на редиректы это не распространяется.
Эдуард Воробьев
г. Ленинск-Кузнецкий
winks***@r*****.ru