Переменные сеанса PHP теряются в Firefox 63.0, Safari 12.0 в MacOS Mojave и Safari в iOS 12.0.1

Последняя версия Firefox 63.0 как для Mac, так и для Windows каким-то образом сломала логин, который я создал для административного бэкенда моего сайта электронной коммерции. Ранее это работало нормально. Я использую PHP.

При успешном входе в систему с действительными учетными данными $_SESSION['admin_logged_in'] переменная установлена ​​в TRUE и я правильно вошел в систему и перенаправлен на стартовую страницу. Однако когда я пытаюсь перейти на любую другую страницу внутри сайта администратора, я сразу же выхожу из системы, как если бы переменная сеанса внезапно была потеряна.

На каждой странице в самом начале, включая начальную страницу, у меня есть сценарий короткой проверки входа, который выглядит следующим образом:

<?php
//start session
session_start() ;
//check user is logged in
if (($_SESSION['admin_logged_in'] !== TRUE) || (!isset($_SESSION['admin_logged_in']))) {
header("location: /index.php") ;
$_SESSION['admin_reason'] = "illegal" ;
exit;
}
?>

Возможно, я думал, что это ошибка в Firefox, однако недавно я также вышел из системы, обычно после навигации по нескольким страницам, в последней версии Safari для iOS 12 и MacOS Mojave.

В настоящее время работает и нет проблем на Opera или Chrome (проверено на Mac).

Я попытался очистить кэш в Firefox и настроить параметры конфиденциальности, но не повезло. Я говорил с моими веб-хостами, и они не знают ни о каких проблемах или изменениях на стороне сервера.

Но если бы была проблема с кодом PHP и переменными сеанса, поскольку это обрабатывается на стороне сервера, предположительно, это не будет работать ни в одном браузере, а также не работало ранее?

Благодарен за любые предложения.


Мне удалось решить эту проблему, см. Мой ответ ниже.

-3

Решение

Мне удалось решить это самому.

Для пояснения: проблема в Firefox версии 63.0 на Mac и Windows, Safari версии 12.0 на MacOS Mojave и Safari на iOS 12.0.1. Другие протестированные браузеры, Chrome и Opera, были в порядке.

Я провел некоторое тестирование с базовым набором страниц и обнаружил, что в Firefox на всех страницах, следующих за любой устанавливаемой переменной сеанса PHP, он не был доступен / не существовал. Safari обычно терял его после навигации по нескольким страницам.

Затем я обнаружил следующую страницу старого поста в ссылках на форумы Mozilla:

https://bugzilla.mozilla.org/show_bug.cgi?id=263057

Я проверил инструменты разработчика и обнаружил, что эти браузеры, каждый раз в случае Firefox и каждые несколько страниц в случае Safari, запрашивали favicon.ico и получали ответ 404, поскольку у меня его там не было. По какой-то причине это нарушало переменные сеанса PHP. Я не понимаю, почему.

Поэтому исправление было просто поместить favicon.ico в корневой каталог веб-сайта.

Спасибо за ваши Коментарии.

2

Другие решения

Возможно, это связано с новой политикой безопасности, которая блокирует некоторые JavaScript или другие ресурсы, используемые в вашей системе входа в систему.

Проверьте веб-консоль Firefox https://developer.mozilla.org/en-US/docs/Tools/Web_Console/Opening_the_Web_Console

Вы можете иметь такие сообщения, как:

Content Security Policy: Ignoring “'unsafe-inline'” within script-src: ‘strict-dynamic’ specified
Content Security Policy: Ignoring “https:” within script-src: ‘strict-dynamic’ specified
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://XXX. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).

Увидеть https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

1

По вопросам рекламы [email protected]