2010-08-05 2 views
2

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

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

+0

Держу пари, что это имеет какое-то отношение к куки-файлу! –

+1

Печенье, истекающее/не отправляемое Сафари, было бы наиболее логичной причиной. Вы можете включить режим отладки Safari и проверить запросы для файла cookie. Или запишите их в журнал доступа к веб-серверам для удобства поиска. – Wrikken

ответ

0

В файле php.ini вы имеете возможность конфигурационный

session.use_only_cookies 

Если установлено значение истинно, PHP будет использовать только куки для отслеживания сессии.

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

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

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

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

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

3

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

0

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

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

Смежные вопросы