Primero, realice estos controles habituales:
- Asegúrese de que
session_start();
se llame antes de que se llame a cualquier sesión. Por lo tanto, una apuesta segura sería colocarlo al comienzo de su página, inmediatamente después de la <?php
declaración de apertura antes que nada. Asegúrese también de que no haya espacios en blanco / pestañas antes de la <?php
declaración de apertura .
- Después de la
header
redirección, finalice el script actual usando exit();
(Otros también han sugerido session_write_close();
y session_regenerate_id(true)
, puede probarlos también, pero yo usaría exit();
)
- Asegúrese de que las cookies estén habilitadas en el navegador que está utilizando para probarlo.
- Asegúrese de que
register_globals
esté apagado, puede verificar esto en el php.ini
archivo y también usando phpinfo()
. Consulte esto sobre cómo apagarlo.
- Asegúrese de no eliminar o vaciar la sesión
- Asegúrese de que la clave en su
$_SESSION
matriz superglobal no se sobrescriba en ninguna parte
- Asegúrese de redirigir al mismo dominio. Entonces, la redirección de un
www.yourdomain.com
a yourdomain.com
no lleva la sesión hacia adelante.
- Asegúrese de que su extensión de archivo sea
.php
(¡sucede!)
Ahora, estos son los errores más comunes, pero si no funcionaron, es probable que el problema lo resuelva con su empresa de alojamiento. Si todo funciona localhost
pero no en su servidor remoto / de prueba, entonces este es probablemente el culpable. Así que verifique la base de conocimientos de su proveedor de alojamiento (también pruebe sus foros, etc.). Para empresas como FatCow e iPage, requieren que especifique session_save_path
. Así como esto:
session_save_path('"your home directory path"/cgi-bin/tmp');
session_start();
(reemplace "su ruta de directorio de inicio" con su ruta de directorio de inicio real. Esto generalmente está dentro de su panel de control (o equivalente), pero también puede crear un test.php
archivo en su directorio raíz y escribir:
<?php echo $_SERVER['SCRIPT_FILENAME']; ?>
El bit anterior a 'test.php' es la ruta del 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 cuando se sincronizan)