Сеанс PHP пуст, когда вызывается на другой странице в сафари - PullRequest
6 голосов
/ 29 апреля 2010

У меня создан сеанс, который является нулевым при вызове из ajax-вызова в Safari.

header.php
session_start();
$_SESSION['test'] = 'this is my session';


mypage.php
session_start();
echo $_SESSION['test']; <-- NOT WORKING ON SAFARI

Спасибо

Ответы [ 4 ]

4 голосов
/ 12 июня 2013

Я столкнулся с той же проблемой, session_id () менял каждое обновление, поэтому safari не сохранял идентификатор сессии в куки. Вручную добавив:

setcookie('PHPSESSID', session_id(), 0, '/');

У меня все получилось.

4 голосов
/ 29 апреля 2010

Работает ли он в других браузерах? Работает ли он в Safari без AJAX? Этот скрипт загружается из того же домена, на котором находится исходная страница?

Safari, по-видимому, имеет более консервативную политику в отношении файлов cookie, чем другие браузеры . Если все на стороне PHP работает и другие браузеры работают, я думаю, что Safari не отправляет сессионный cookie обратно на сервер.

1 голос
/ 29 апреля 2010

Добавьте эту строку после session_start() в обоих файлах и скажите мне, если идентификатор сессии одинаковый (это означает, что вы находитесь в одном сеансе).

echo session_id();
0 голосов
/ 29 апреля 2010

это null или ""?

когда вы if(isset($_SESSION['test'])) возвращаете true?

это только сафари? если это так, это настройки вашего браузера.

Успешно ли сохранен ваш cookie-файл сеанса, и вы можете прочитать этот $ _session ['test'] на остальной части страницы header.php?

Вы вызываете session_start () в самом начале страницы?

вы получаете какие-либо ошибки? если нет - у вас deffo их включили?

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