Проблема с использованием сессий в PHP - PullRequest
0 голосов
/ 11 июня 2011

Я использую сеансы на 2 страницах. На первой странице я сохраняю данные:

код первой страницы:

<?php
  session_start();
  $_SESSION['dl']="goooo";
  // run page two by use fsockopen
   ...

На второй странице:

<?php
  session_start();
  $_SESSION['dl']="asd";
   ...

Когда я читаю сессию на другой странице, результат "goooo"! Почему «asd» не сохраняется в сеансе?

какова ваша идея сохранить 'dl' в многостраничном режиме? (сообщение и cookie не помогают)

Ответы [ 3 ]

2 голосов
/ 12 июня 2011

Поскольку fsockopen не отправляет обратно cookie, идентифицирующий браузер на ваш сервер.

Старайтесь иметь три страницы и проведите тот же эксперимент. Вы увидите, что они будут работать, как и ожидалось.

0 голосов
/ 12 июня 2011

Сессии работают путем сохранения идентификатора сессии в файле cookie в браузере клиента. Меня не удивляет, что сессии не работают, когда вы запускаете скрипт, используя fsockopen, практически открывая страницу на сервере вместо клиентского браузера.

0 голосов
/ 12 июня 2011

Поскольку сеанс фактически является сериализованным массивом, который идентифицируется номером.Число, которое позволяет PHP загружать нужный сеанс, отправляется через cookie (или параметр URL) из браузера пользователя.Если вы открываете вторую страницу с fsockopen, вы, вероятно, не указали правильный идентификатор сеанса.Таким образом, в этом вызове создается новый сеанс (и о нем забывают, так как никто не знает номер).

Более того, $_SESSION не перезагружается при выполнении одной страницы - предполагается, что выполнение страницыодин запрос от браузера, и поэтому не будет волшебным образом изменен в середине запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...