Подтвердить что ты не робот

Данные сеанса, потерянные только в Chrome

У меня проблема аналогичная, если не идентична проблеме в этом потоке: Случайное проигрывание переменных сеанса только в Google Chrome и перезаписи URL

Но все решения в этом потоке не работают для меня. Я получаю странное поведение только от Google Chrome в моем PHP/MySQL приложении. Если я пытаюсь использовать Firefox, он работает, но Chrome не делает.

Я перемещаюсь в какое-то место в своей корзине покупок и в нескольких местах в коде храню данные сеанса. Не беспокойтесь обо мне, начиная сессию или что-то связанное с этим, у меня есть 11 лет в webapp dev, все сделано хорошо.

Во всех браузерах я могу var_dump($_SESSION) и вернуть свои данные, но в Chrome он не хранит данные. Также обратите внимание, что сеанс действительно передается, я могу посмотреть в сетевом мониторе, и я вижу, что печенье отправлено и многое другое связано с работой сеанса, но этот $_SESSION['last_viewed_element'] не сохраняется. Я также не могу показать ничего другого, все потеряно.

EDIT:

Проблема решена путем переключения с СЕССИЙ НА ПЕЧАТИ...

4b9b3361

Ответ 1

В конце концов, ответа нет, проблема все еще существует, я просто переключился на использование файлов cookie вместо этого, если кто-нибудь когда-нибудь получит эту проблему с помощью chrome + wordpress в то же время, не теряйте больше времени, переключитесь на файлы cookie...

Ответ 2

У меня была очень похожая проблема, в моем случае проблема была вызвана 404 из-за отсутствия favicon.ico в Chrome. 404.php назвал нижний колонтитул, который изменил переменные Session. Я надеюсь, что это поможет кому-то.

Ответ 3

Проблема может заключаться в том, что ваш сервер ищет значки, если он не найден, сервер выдает перенаправление 302, которое убивает переменные сеанса.

Ответ 4

У меня была эта проблема, и я смог ее исправить. Chrome продолжает искать файл .ico, и по какой-то причине он влияет на него. Как только я поместил файл .ico в корневой каталог сайта, все начало работать. Сумасшедшая, но правда.

Ответ 5

У меня была такая же проблема, но на IIS с ASP.Net MVC. IE и Firefox все в порядке, но в Chrome я терял данные сеанса. В конце концов выяснилось, что ошибка 404 очищала файл cookie в Chrome. Ниже приведены шаги, которые я выполнил, чтобы найти проблему и решить ее. Я предлагаю другим попробовать:

  • В Chrome используйте Инструменты → Инструменты разработчика. Обновите страницу, чтобы "Инструменты разработчика" начали показывать данные.

  • В инструментах разработчика, проверьте ресурсы → Cookies. Сразу после успешного входа в систему у меня было 2 файла cookie для домена, который я тестировал. При переходе на страницу, где я потерял сессию, один из файлов cookie больше не отображался. Снимок был снят после исправления, показывая оба файла cookie: enter image description here

  • Теперь откройте вкладку "Сеть". Посмотрите внимательно на любой ресурс (html/image/css/js/...), который имеет любую ошибку. У меня была ошибка 404 для файла шрифта. Ошибка 404 была вызвана отсутствием типа mime в IIS. исправление ошибки 404 устраняет проблему в Chrome. Снимок экрана, снова принятый после исправления, имел все ресурсы с статусом ОК: enter image description here

Бонус был, исследуя эту проблему, помог мне узнать отсутствующий тип mime в IIS, который затрагивал больше страниц во всех браузерах.

Ответ 6

Была такая же проблема и, наконец, решена. Вход установил сессию с domain.com, но в перенаправлении это было www.domain.com. IE и FF, похоже, считают, что www и ни один из них не являются такими же, но Chrome этого не делает. Найдено путем проверки Host в сетевом журнале для каждой загрузки страницы.

Ответ 7

Просто попробуйте это, прежде чем тратить свое время

Если вы уже вошли в свое веб-пространство (панель управления /Cpanel/ панель Plesk) в том же браузере. Затем выйдите из этой панели управления и очистите cookie и попробуйте снова

В случае

данные сеанса, потерянные только в хром

В моем случае я просто reset браузер Chrome

Перейдите в chrome://settings/затем нажмите advanced, затем reset

введите описание изображения здесь

Ответ 8

Код, с которым я работал, имел ту же проблему. Решено, удалив следующее:

session_id($_GET['sid']);
session_write_close();

Ответ 9

Я решил проблему, удалив строку:

base href="http://mysite/"

из тега head в HTML-коде.

Ответ 10

Рассматривая следующую ссылку: http://code.google.com/p/chromium/issues/detail?id=45582

Я считаю, что проблема связана с тем, что PHP получает запрос, который не соответствует файлу, а затем неправильно обрабатывает 404. Я должен был сказать Nginx, чтобы он соответствовал любому URL-адресу с favicon.ico, а затем возвратил 404.

Вот моя строка для Nginx:

 if ($request_uri ~ 'favicon') {
            return 404;
 }

Ответ 11

В вашем файле php ini попробуйте установить

session.save_path = /path/to/your/tmp

На некоторых серверах иногда сеансу требуется явно прямой файл сеанса для сохранения в локальном каталоге или в противном случае происходит какая-то странность.

Ответ 12

ХА! Я наконец решил это!

При выполнении перенаправления header() в PHP вы должны сделать die() сразу после него. THAT разрешает его только для всех браузеров, кроме Chrome.

Для Chrome вы также должны сделать session_write_close() прямо перед header()

Успех Sweeeeeeeeet

Ответ 13

Это мгновенно решило мою проблему: перейдите в chrome://settings/cookies, затем найдите локальный хост и удалите его файлы cookie. Решение настолько просто, что стоит попробовать

Ответ 14

У нас была такая же проблема вчера весь день.

Что (по-видимому) разрешило это (для нас) было обновление chrome.

У нас была версия 45.0.2454.93 и с момента обновления до версии 45.0.2454.99 проблема не возникала снова...

Ответ 15

У меня была аналогичная проблема, я обнаружил причину, которая была очень странной. В моем случае один URL-адрес изображения внутри класса css был неправильным!! Браузер не загрузил изображение и потому, что страница была формой регистрации с полем пароля, браузером reset сеансом по соображениям безопасности.

Ответ 16

Я не уверен, что ваш случай похож на мой. Но для меня причиной было формирование URL.

С хром, набрав URL-адрес как " http://www.domainname.com" и установив там переменные сеанса.

и перенаправлением с помощью http://domainname.com" без WWW. sessionid не используется повторно.

Это решило мою проблему, надеюсь, это поможет

Ответ 18

Я нашел, что моя версия вопроса была в точности как описано здесь и здесь, и поэтому я хочу добавьте еще один квалификатор к вышеперечисленному, который

Google Chrome (v.59, stable) Инспектор не говорит вам, что favicon.ico недоступен и не сообщает, что страница перенаправлена ​​на 302.

Ответ 19

Я нашел "решение" (это не проблема, а только эффекты!!)...  если на вашей странице используется ajax, ajax is asyncronus... Если я вызываю функцию, которая работает на SESSION, чем я вызываю другую страницу, которая работает на сеансе, несколько раз первый вызов не заканчивается перед вторым запуском и эффектом первого перезаписываемого ответа второго. Я разрешаю проблему с async: false в каждом вызове ajax.

Ext.Ajax.request({
    url: '/io/resetsession.php', 
    **async: false**
});
Ext.Ajax.request({
    url: '/io/loaddata.php', 
    **async: false**,
    .....
});