Tengo un sitio web de una página que usa AJAX para cargar nuevos archivos php y actualizar la pantalla.Variables de sesión PHP no preservadas con ajax
Comienzo mi sesión php en la página principal, pero cuando uso ajax para actualizar inner html necesito esas variables de sesión para el nuevo archivo php que se está cargando.
Esta publicación es similar a esta: PHP Session Variables Not Preserved. Pero he comprobado y mi php.ini tiene session.use_cookies = 1
Página Principal PHP:
<?php
session_start();
if(isset($_SESSION['views']))
{$_SESSION['views']=$_SESSION['views']+1;}
else
{$_SESSION['views']=1;}
?>
Después de la entrada de usuario que utilizar AJAX para llamar a un archivo PHP y cargar una subsección de la página:
<?php
if(isset($_SESSION['views']))
{ echo "Views: " . $_SESSION['views'];}
else
{ echo "Views: NOT SET";}
?>
¿Puede alguien decirme qué paso importante me falta? Gracias.
Actualización: Después de agregar la llamada a session_id() tanto en la página principal como en la secundaria, veo que ambas páginas tienen el mismo Session_ID. Sin embargo, todavía no puede extraer la variable de sesión y si le asigno un valor, las dos variables de sesión del mismo nombre se mantienen independientes entre sí.
Respondo a la pregunta que creó esta pregunta: Encontré que tenía que establecer una ruta estática de session_save en mi archivo php.ini. Con la mayoría de los servicios de alojamiento web pagos, solo tienen un contenedor predeterminado para las sesiones, pero se ve afectado por el equilibrio de carga. Qué significa.
Cuando uso session_start() en el nuevo archivo se crea una nueva sesión. ¿Hay alguna forma de vincular estas sesiones? – Quinma
Lo que "vincula" a las sesiones es la cookie de sesión, que debe estar en el encabezado Cookie de la solicitud HTTP ... – Peter
No está utilizando un servidor web de carga equilibrada, ¿o sí? (cuando se utiliza el almacén de respaldo predeterminado basado en archivos para sesiones de PHP, naturalmente no hay forma de que los hosts compartan información de sesión) – Peter