> Faqs > Degradación de las variables de Sesión en PHP

Degradación de las variables de Sesión en PHP

Buenos días,

Tengo un problema con las variables de Session en PHP, se confuden con los usuarios logeados.

El tema es que en la web tengo un login de usuarios, y al logearse guardo su identificador en una variable de sesión, y no se porque pero funciona bien pero a veces un usuario logeado de repente le aparecen los datos de otro usuario logeado, como si cogiera la variable de sesión del servidor del otro usuario.

Saben porque puede suceder esto? no se si puede ser problema de la configuración de mi hosting

Muchas gracias,

Respuestas

Es posible que haya diferencias entre tu configuración local y la de tu servidor de producción.

Algo que puedes hacer es crear un script que sólo contenga la llamada a phpinfo();, ejecutarlo en cada ambiente y comparar los resultados.

Ten cuidado sólo de no dejar ese script en tu servidor de producción abierto a cualquiera porque podría ser utilizado en un ataque.

Saludos,

Mauro Chojrin
30 1 4

El comportamiento que indicas es realmente extraño. No hay motivo que a priori explique que las variables de sesión puedan intercambiarse por las de otro usuario.

Las variables de sesión se apoyan a menudo en cookies del navegador. Podría darse el caso que no estén activadas para un navegador dado, o incluso que se haya hecho login con un usuario y se haya quedado algún rastro que haga confundir a la aplicación web. Podrías probarlo con otro navegador para descartar ese problema.

Puedes revisar estas cuestiones para asegurarte que no haya problemas:

  • Comenzar el script PHP con session_start(), justo al iniciar el código de la página
<?php
session_start();
  • Al cambiar de usuario o hacer el logout, asegurarte que se invalidan las variables de sesión.
<?php
session_destroy();

Puedes probar a generar incluso otro id de sesión con:

<?php
session_destroy();
session_regenerate_id(true)
  • Asegúrate que no estás asignando un array a mano tú mismo sobre $_SESSION[];
  • Fíjate que la URL de la página sea siempre del mismo dominio. Es decir, si estás en www.example.com podrías tener un usuario distinto activo que en example.com porque en la práctica son dominios distintos.

Otra cosa, al hacer redirecciones (posiblemente después de ejecutar el código del logout) puedes invocar a exit(); antes de header(), para asegurarte que el script actual se cierra y no se mezcla con el siguiente.

María
187 4 17 10
Hola María Voy a revisar todo lo que me comentas Muchas gracias