Отправляет email-рассылки с помощью сервиса Sendsay

[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
Грызунов Александр. Самара.

Ответить   "eastreb" Sun, 18 Sep 2011 13:07:53 +0400 (#1887196)

 

Ответы:

области

Приветствую Iastreb.

if (!isset($_SESSION['UserDataString']))
{
echo 'Сессионная переменная UserDataString не установлена<br />';
}

Ну правильно. Дело в том, что информация о сессии передается либо через
куки либо посредством добавления переменной phpsessid к GET-части урла.
Если php настроен так, что сервер не отдает куки, либо браузер не
принимает их, соответственно идентификация сессии происходит только
через get-запрос.
На практике это выглядит так: при старте сессии сервер отправляет
клиенту заголовок, означающий, что к каждой ссылке и форме на странице
необходимо добавлять идентификатор сессии в переменной phpsessid.
соответственно на редиректы это не распространяется.

Эдуард Воробьев
г. Ленинск-Кузнецкий
winks***@r*****.ru

Ответить   Mon, 19 Sep 2011 05:42:37 +0700 (#1888353)

 

области

Excuses, коллега. Это я о том, кто виноват. теперь, что делать?

header("Location: http://MyURL/test.php?".session_name().'='.session_id());

Так будет работать?

Эдуард Воробьев
г. Ленинск-Кузнецкий
winks***@r*****.ru

Ответить   Mon, 19 Sep 2011 06:52:14 +0700 (#1888359)