Переменные сеанса PHP теряются в Firefox 63.0, Safari 12.0 в MacOS Mojave и Safari в iOS 12.0.1 - PullRequest
0 голосов
/ 26 октября 2018

Последняя версия 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 и переменными сеанса, так как это обрабатывается на стороне сервера, предположительно, этоне работает ни в одном браузере, а также не работал ранее?

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


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

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

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

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

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

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

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

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

Таким образом, исправление состояло в том, чтобы просто поместить favicon.ico в корневой каталог веб-сайта.

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

0 голосов
/ 27 октября 2018

Возможно, это связано с новой политикой безопасности, которая блокирует некоторые 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

...