2010-11-06 24 views
5

Tengo una aplicación iFrame de Facebook (escrita en PHP) y cuando la ejecuto en IE8, los datos de mi sesión no se conservan.Facebook/IE8 - No se persiste la sesión

Estoy usando Symfony 1.4 y he probado tanto el contenedor de sesión de Symfony como $ _SESSION.

Configuré dos páginas de prueba: la primera define $_SESSION['foo'] = 'bar' y llama a print_r($_SESSION). La segunda página también llama al print_r($_SESSION). Veo mis variables de sesión configuradas en la primera página, pero no en la segunda.

Todo funciona bien en Firefox y Chrome, y he tenido otras dos personas para probar esto en diferentes PC con IE8 y tienen el mismo problema.

Intenté eliminar cualquier javascript de Facebook de mi página, pensando que de alguna manera podría interferir, pero eso no solucionó nada.

¡Cualquier ayuda sería muy apreciada, gracias!

+0

posible duplicado de [¿Cómo manejar correctamente el token de sesión y acceso con Facebook PHP SDK 3.0?] (Http://facebook.stackoverflow.com/questions/6468103/how-to-properly-handle-session- and-access-token-with-facebook-php-sdk-3-0) – rjmunro

Respuesta

23

Después de algunas investigaciones adicionales, este es un problema específico con las aplicaciones de iframes de Facebook e Internet Explorer. Afortunadamente, la solución es muy simple, solo necesitaba agregar este código header('P3P: CP="CAO PSA OUR"'); ¡Todo funciona bien ahora!

Editar

Después de más investigación, este problema no es específico de Facebook, sólo iframes. Tiene que ver con las cookies de terceros y cómo Internet Explorer (y Safari) las manejan. Quiero señalar que el código de encabezado funciona para IE, pero no para Safari.

+0

¡Muchas gracias! –

1

Estaba teniendo el mismo problema. Las sesiones de PHP no persistían en IE8, pero estaban en todos los demás navegadores (Chrome, Firefox, Opera, Safari). Nada funcionó. Intenté todo, desde los encabezados adecuados con las directivas P3P, la manipulación de cookies, el restablecimiento de los id de sesión, el establecimiento de cookies para caducar en el futuro, bla, bla, bla.

Esto es lo que finalmente funcionó (y no sé por qué funciona), pero esto era el culpable ...

Después de días de depuración, me encontré con que mi guión tenía una etiqueta de imagen que tenía una src mala referencia en el mismo, así:

<img src=""> 

en otras palabras, la referencia src estaba vacío/en blanco. ESTE FUE EL CULPABLE PARA MI PROBLEMA ENTERO. No sé por qué, pero después de poner en una ubicación real de la imagen como esta:

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

Después de corregir la referencia src vacía, todo funcionaba bien y la sesión de PHP se estaba estableciendo correctamente incluso en IE8. Lo creas o no, esta fue la razón detrás de la sesión PHP no se establece.

Todavía no tengo ni idea, pero funcionó bien después de esto. Tendré que investigar por qué esto causaría un problema como este. Si alguien sabe por qué, publique la respuesta.

Espero que esto ayude a alguien. :-)

Cuestiones relacionadas