ID сессии PHP не остается в Safari - PullRequest
2 голосов
/ 06 августа 2010

Какие причины могут быть для того, чтобы PHP предоставлял новый идентификатор сеанса браузеру Safari с абсолютно случайными интервалами?

Может ли файл cookie PHPSESSID истек в клиенте?Или может быть что-то еще, более сложное?

Ответы [ 3 ]

3 голосов
/ 15 февраля 2011

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

0 голосов
/ 12 апреля 2014

добавить session_set_cookie_params(0, "/"); после session_start();

обратная косая черта заставила меня работать в Safari сессий.

0 голосов
/ 06 августа 2010

В вашем файле php.ini у вас есть опция конфигурации

session.use_only_cookies

Если для этого параметра установлено значение true, PHP будет использовать только файлы cookie для отслеживания сеанса.

В противном случае в PHP есть запасной метод для использования get, если браузер отключил файлы cookie.

Таким образом, если вы установите для этого параметра значение false, сеансы также будут работать, если в вашем Safari отключены файлы cookie.

Однако это имеет недостаток безопасности. Некоторые пользователи, которые копируют ваш URL-адрес и отправляют их друзьям, могут скопировать строку SID с URL-адресом и, следовательно, открыть сеанс своим друзьям. Если вы храните SID только в файлах cookie, этого не произойдет.

Что касается продолжительности сеанса, взгляните на параметр конфигурации session.gc_maxlifetime :

session.gc_maxlifetime указывает количество секунд, после которого данные будет рассматриваться как «мусор» и очищается вверх. Сборка мусора происходит во время начало сеанса.

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