Сломанные переменные сеанса на iPhone / iPod Touch с использованием PHP - PullRequest
1 голос
/ 03 сентября 2010

Я пытаюсь просто установить переменную сеанса на одной странице, а затем загрузить ее на другой странице. Этот код работает в Firefox в Windows 7. Он не работает при доступе к тем же страницам на моем iPod Touch.

Первая страница выглядит так:

session_start(); 
$id = "e0vgrejdmkjbltrdrtqtnjgzmy1cqurfluuzodeyqjlcoey5rx0";
$_SESSION['id'] = $id;

Вторая страница содержит этот код:

session_start();
$id = $_SESSION['id'];
echo "ID is $id";

Выходные данные отображаются как:

ID is 

Если я запускаю этот код:

echo "Cookie ";
print_r($_COOKIE);
echo "Session ";
print_r($_SESSION);

Вывод на моем компьютере с Windows:

Cookies Array ( [__utma] => 118825363.834893446.1282611798.1283521628.1283525684.13 [__utmz] => 118825363.1283397018.9.7.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=spf test [PHPSESSID] => 6333ddae9f0514f7c4744e340a6746d1 [__utmc] => 118825363 [__utmb] => 118825363.5.10.1283525684 [id] => eza3odazrtcxlty5mdutoem2ms05ndqxltrcnzvgrjjbnzrgqn0 ) Session Array ( [id] => ezffmddgmdmxluvcmzmtruvfnc0wmdu4ltrfnzddnevfmdhfnx0 ) 

и вывод на моем iPhone:

Cookies Array ( [PHPSESSID] => 8ec43ead5611dde399d763166926021d [__utma] => 118825363.1927811493.1283218120.1283521676.1283525856.6 [__utmb] => 118825363.1.10.1283525856 [__utmc] => 118825363 [__utmz] => 118825363.1283490501.4.3.utmcsr=(mydomain.com)|utmccn=(referral)|utmcmd=referral|utmcct=/ ) Session Array ( [id] => )

Никаких ошибок не происходит, просто кажется, что для $ id задано значение "", я думаю. Это кажется достаточно простым. Есть ли что-то, чего мне не хватает, если вы не можете сделать это на устройстве Apple?

Ответы [ 5 ]

2 голосов
/ 04 сентября 2010

Решено: я использовал абсолютный URL вместо относительного.Я предполагаю, что все портит.

1 голос
/ 14 мая 2012

Вы не можете получить сеанс на iPhone, потому что cookie отключен.

Перейдите в Safari> Настройки> Принять Cookies на вашем iPhone и установите его для принятия от Visited.

Тогда вы сможете создать сеанс на PHP.

1 голос
/ 03 сентября 2010

Разница должна быть в печенье. Do print_r ($ _ COOKIES); и вы увидите, что iPad / iPhone по какой-то причине не хочет отправлять вам куки, тогда посмотрим.

0 голосов
/ 03 сентября 2010

Ответ на ваш вопрос прост.

$ _ SESSION ['id'] равно только для чтения .

Если вы сделаете $_SESSION['id'] = 'foo'; на следующей странице, она вернется к своему первоначальному значению.

Чтобы изменить идентификатор сеанса:

session_id('foo');

Это императив , который вы звоните session_id('foo'); до session_start().

0 голосов
/ 03 сентября 2010

Проверьте session_id() в обоих сценариях. Скорее всего, cookie-файл сеанса по какой-то причине не сохраняется iPhone, поэтому каждый раз при создании второй страницы создается новый сеанс, в котором id не будет храниться из предыдущего сеанса.

Используйте какой-нибудь проводной сниффер на iphone (или на сервере, если вы не можете сделать это на телефоне), чтобы увидеть, будут ли соответствующие заголовки cookie перемещаться туда и обратно.

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