Я использую веб-сервер apache для обслуживания сайтов с использованием php. Я установил тайм-аут сессии php до 60 секунд (для тестирования). У меня есть экран входа на сайт, который отправляет учетные данные, используя ajax-вызов php. При успешном входе в систему php устанавливает cookie-файл, используя следующий код:
setcookie('mylogin', 'mydata', time() + (86400 * 30), '/');
Я тестирую свой сайт на iOS 13.1 Safari на iPhone 6S. Я вхожу в систему и затем перенаправляюсь на домашнюю страницу. Я проверяю вкладку, подключив ее к Mac. Я вижу, что печенье сохранено. Затем я поставил сафари в фоновом режиме, нажав кнопку домой. Через минуту, когда сессия php истечет, я нажимаю значок сафари и возвращаю его на передний план. Safari автоматически обновляет вкладку, удаляет файл cookie «mylogin». И из-за этого я снова получаю экран входа в систему.
Я уже пытался установить домен при вызове setcookie, как показано ниже:
setcookie('mylogin', 'mydata', time() + (86400 * 30), '/', 'mydomain.com');
Я даже попробовал файл cookie httponly
, как показано ниже:
setcookie('mylogin', 'mydata', time() + (86400 * 30), '/', 'mydomain.com', false, true);
Файл cookie httponly
также удаляется.
Есть идеи, почему сафари удаляет файл cookie при истечении времени сеанса php?