Sesión PHP perdida después de la redirección

Resuelto dayuloli asked hace 54 años • 39 respuestas

¿Cómo resuelvo el problema de perder una sesión después de una redirección en PHP?

Recientemente, encontré un problema muy común al perder la sesión después de la redirección. Y después de buscar en este sitio web todavía no encuentro la solución (aunque esta fue la más cercana).

Actualizar

Encontré la respuesta y pensé en publicarla aquí para ayudar a cualquiera que experimente el mismo problema.

dayuloli avatar Jan 01 '70 08:01 dayuloli
Aceptado

En primer lugar, realice estas comprobaciones habituales:

  1. Asegúrese de session_start();que lo llamen antes de convocar cualquier sesión. Por lo tanto, una apuesta segura sería colocarlo al principio de su página, inmediatamente después de la <?phpdeclaración inicial, antes que nada. También asegúrese de que no haya espacios en blanco ni tabulaciones antes de la <?phpdeclaración de apertura.
  2. Después de la headerredirección, finalice el script actual usando exit();(Otros también han sugerido session_write_close();y session_regenerate_id(true), también puede probarlos, pero yo usaría exit();)
  3. Asegúrese de que las cookies estén habilitadas en el navegador que está utilizando para probarlo.
  4. Asegúrese de que register_globalsesté desactivado, puede verificar esto en el php.iniarchivo y también usando phpinfo(). Consulte esto para saber cómo apagarlo.
  5. Asegúrate de no haber eliminado ni vaciado la sesión.
  6. Asegúrese de que la clave en su $_SESSIONmatriz superglobal no se sobrescriba en ninguna parte
  7. Asegúrate de redirigir al mismo dominio. Entonces, redirigir de a www.yourdomain.coma yourdomain.comno continúa la sesión.
  8. Asegúrese de que la extensión de su archivo sea .php(¡sucede!)

Ahora bien, estos son los errores más comunes, pero si no funcionaron, lo más probable es que el problema tenga que ver con su empresa de hosting. Si todo funciona en localhostsu servidor remoto/de prueba, pero no en él, lo más probable es que este sea el culpable. Así que consulte la base de conocimientos de su proveedor de alojamiento (pruebe también sus foros, etc.). Para empresas como FatCow e iPage, requieren que especifiques session_save_path. Entonces así:

session_save_path('"your home directory path"/cgi-bin/tmp');
session_start();

(reemplace "la ruta de su directorio de inicio" con la ruta de su directorio de inicio real. Esto generalmente se encuentra dentro de su panel de control (o equivalente), pero también puede crear un test.phparchivo en su directorio raíz y escribir:

<?php echo $_SERVER['SCRIPT_FILENAME']; ?>

El bit antes de 'test.php' es la ruta de su directorio de inicio. Y, por supuesto, asegúrese de que la carpeta realmente exista dentro de su directorio raíz. (Algunos programas no cargan carpetas vacías al sincronizar)

dayuloli avatar Jun 21 '2013 18:06 dayuloli

deberías usar "salir" después de la llamada al encabezado

header('Location: http://www.example.com/?blabla=blubb');
exit;
KraftART Berlin avatar Jun 02 '2015 12:06 KraftART Berlin

Probé todas las soluciones posibles, ¡pero ninguna funcionó para mí! Por supuesto, estoy usando un servicio de alojamiento compartido.

Al final, solucioné el problema usando una 'URL relativa' dentro del encabezado de redireccionamiento.

header("location: http://example.com/index.php")

anuló las cookies de sesión

header("location: index.php")

trabajado como un encanto !

ali al-juanidi avatar Mar 31 '2015 21:03 ali al-juanidi

Yo tuve el mismo problema. Trabajé en ello durante varias horas y me volvió loco.

En mi caso, el problema fue una llamada 404 debido a que faltaba un favicon.ico solo en Chrome y Firefox. Los otros navegantes trabajaron bien.

Jeremie avatar May 05 '2016 11:05 Jeremie

Estaba teniendo el mismo problema. De repente, ALGUNAS de las variables de mi sesión no persistían en la página siguiente. El problema resultó ser (en php7.1) la ubicación del encabezado no debe tener WWW, por ejemplo, https://mysite . está bien, https://www.mysite . perderá las variables de sesión de esas páginas. No todos, solo esa página.

Wynn avatar Feb 23 '2017 11:02 Wynn