Problema al configurar las variables PHP SESSION dentro del iframe entre dominios
-
03-07-2019 - |
Pregunta
Versión de notas de Coles:
index.php?map_id=foo
se carga en iframe en www.not-my-domain.com.conjuntos de índices SESSION['map_id']
= foo.El archivo Flash intenta obtener SESSION['map_id']
a través de Authenticate.php, pero Authenticate.php no tiene valores establecidos para cualquier SESSION
variables.
-- Solo problema entre dominios y primera carga.
Verboso:
Tengo un índice mientras configuro: SESSION['map_id'] = foo
El archivo de índice luego carga un archivo flash.Cuando se inicializa, el flash accede a un archivo 'Authenticate.php' que se repite en el SESSION['map_id']
y se carga en flash a través de LoadVars
.Flash luego muestra los datos apropiados.Este paso no se puede hacer de otra manera.
Todo esto funciona bien en nuestro sitio principal.El problema surge cuando intentamos migrar a otros sitios proporcionando códigos de inserción de iframe:
<iframe src="http://www.mydomain.com/?map_id=foo&code=bar" ... ></iframe>
En una nueva carga del código de inserción de otro sitio (www.anotherdomain.com), parece que el SESSION
Las variables han sido destruidas, ya que flash simplemente dice que están vacías.( $map_id
genera un espacio en blanco)
El archivo de índice seguirá haciendo eco correctamente $map_id
como 'foo', parece que el archivo 'Authenticate.php' no puede acceder al SESSION
variables.
me he asegurado session_start()
está presente en todos los archivos apropiados.
Solución
Los ID de sesión PHP se pasan a través de las cookies de forma predeterminada, pero no puede transferir cookies a través de dominios. Intente pasar la identificación de la sesión a través de la URL en su lugar.
Aquí está la página apropiada en la documentación de php .
Hay algunas formas en que puede hacer que php pase la identificación de la sesión en la URL si no se hace automáticamente.
-
Puede pasar manualmente el ID de sesión en la url (debe venir antes que otras variables get):
< iframe src = " http: //www.mydomain.com/? & amp; map_id = foo & amp; code = bar " gt;
-
Puede deshabilitar las cookies, lo que obliga a cada solicitud a que el ID de sesión se agregue automáticamente a la URL:
ini_set("session.use_cookies","0");
-
Puede editar la configuración url_rewriter.tags, que le dice a PHP qué etiquetas html debe reescribir con la identificación de la sesión. Aquí, iframe = src se ha agregado al conjunto predeterminado:
ini_set (" url_rewriter.tags " ;, " a = href, area = href, frame = src, iframe = src, input = src, form = fakeentry ");