Facebook / IE8 - сессия не сохраняется - PullRequest
5 голосов
/ 06 ноября 2010

У меня есть приложение Facebook iFrame (написанное на PHP), и когда я запускаю его в IE8, мои данные сеанса не сохраняются.

Я использую Symfony 1.4 и пробовал как сессионную оболочку Symfony, так и $ _SESSION.

Я настроил две тестовые страницы: первая определяет $_SESSION['foo'] = 'bar' и вызывает print_r($_SESSION). Вторая страница также называется print_r($_SESSION). Я вижу свои переменные сеанса, установленные на первой странице, но не на второй.

Все отлично работает в Firefox и Chrome, и у меня было два других человека, которые тестировали это на разных ПК с IE8, и у них та же проблема.

Я пытался удалить любой javascript Facebook со своей страницы, думая, что это может как-то мешать, но это ничего не решило.

Любая помощь будет принята с благодарностью, спасибо!

Ответы [ 2 ]

23 голосов
/ 06 ноября 2010

После дополнительных исследований эта проблема связана с приложениями Facebook iframe и Internet Explorer.К счастью, решение очень простое, мне просто нужно было добавить этот код header('P3P: CP="CAO PSA OUR"'); Теперь все отлично работает!

Редактировать

После еще больших исследований эта проблемаспецифично для Facebook, просто для фреймов.Это связано со сторонними файлами cookie и с тем, как Internet Explorer (и Safari) обрабатывают их.Я хочу отметить, что код заголовка работает для IE, но не для Safari.

1 голос
/ 02 октября 2012

У меня была такая же проблема.Сессии PHP не сохранялись в IE8, но были в любом другом браузере (Chrome, Firefox, Opera, Safari).Ничего не получалось.Я попробовал все: от правильных заголовков с помощью директив P3P, манипулирования файлами cookie, сброса идентификаторов сеансов, установки файлов cookie, срок действия которых истекает в будущем, бла, бла, бла.

Вот что наконец сработало (и я не знаю, почему это работает), но это было виновником ...

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

<img src="">

Другими словами, ссылка src была пустой / пустой.ЭТО БЫЛО КУПРИТОМ ДЛЯ ВСЕЙ ПРОБЛЕМЫ.Я не знаю почему, но после того, как я вставил фактическое местоположение изображения, подобное этому:

<img src="./images/myimage.gif">

После исправления пустой ссылки src все работало нормально, и сессия PHP была настроена правильно даже в IE8.Верьте или нет, это было причиной того, что сеанс PHP не был установлен.

Я до сих пор не знаю, но после этого он работал нормально.Я должен исследовать, почему это может вызвать такую ​​проблему.Если кто-то знает почему, пожалуйста, оставьте ответ.

Надеюсь, это кому-нибудь поможет.: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...