Pregunta

Tengo un sitio web de PHP estoy manteniendo y he confirmado que este trabajaba en un punto.

Tenemos un sitio web utilizando un sistema de login que almacena un usuario ha iniciado la sesión de la información en un $_SESSION['user'] variable.El sitio utiliza para la sesión del usuario cuando hace clic /logout.php que básicamente se quitó la parte de la sesión, entonces header() redirigido a la página de inicio.

Como recientemente, el /logout.php archivo con session_start() en la parte superior de alguna manera no puede ver la información de la sesión cuando print_r() se utiliza para la salida para propósitos de depuración.

Si me voy a otra página, veo la información de la sesión bien, pero no en el cierre de sesión de la página...que es exactamente por qué no puedo quitar la información de la sesión, porque no es accesible.

Pensé $_SESSION era global en el sitio hasta que el navegador se cierra.Nunca he tenido que esto ocurra y sé que la instancia de sesión se inició en esta página, así que es raro que no me muestra los datos de la sesión.

Alguna idea?Estoy totalmente perplejo en este!

Código:/logout.php

<?
#session_start() is inside this file
require_once($_SERVER['DOCUMENT_ROOT'].'/includes/config.php');

unset($_SESSION['user']);
header("location: /");
exit();
?>

La comprobación de $_SESSION['user'] es de todo el sitio y los invito a que varios elementos por debajo de él cuando sea necesario para diferentes cosas.Alguien construido este sitio y estoy tratando de depurar por qué no trabajar para ellos de repente.

¿Fue útil?

Solución

Está usted accediendo a logout.php a partir de la mismo dominio que se establece la sesión para empezar (es decir,example.com vswww.example.com/logout.php)

Como acaba de anular la definición específica de los datos de la sesión, sería mejor llamar session_destroy() y, a continuación, desactivar las cookies en su navegador para matar a la sesión.

Otros consejos

Si el dominio / subdominio es el mismo que el resto de la página, yo diría que esto suena como un error típico salida de la sesión frente. Asegúrese de que ha permitido a todos los errores, y mostrarlas, como se podría haber impreso salida al cliente antes de llamar session_start(). Esto romperá la función y haciendo sesiones disponible.

Para solucionar el problema (si es el caso), se debe eliminar toda la salida antes de session_start. Incluso un espacio antes <?php se considerará salida por Apache (y otros). También asegúrese de que tiene desactivado BOM (Byte Order Mark) en el documento (cualquier editor decente le permitirá cambiar esto, sólo tiene que buscar algo así como "setings archivo actual").

Recuerde siempre la primera línea de su código PHP debe ser session_start(); y nada más. Si todo el va a hacer es desarmar las variables de sesión y destruir la sesión, intente eliminar el require_once($_SERVER['DOCUMENT_ROOT'].'/includes/config.php'); y añadir el session_start () y el session_destroy () al final del archivo logout.php y ver si funciona.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top