Question

J'ai un site PHP Je suis maintenant et je l'ai confirmé que cela a fonctionné à un moment donné.

Nous avons un site Web en utilisant un système de connexion qui stocke une connecté les informations de l'utilisateur dans une variable $_SESSION['user']. Le site utilisé pour déconnecter l'utilisateur en cliquant sur /logout.php qui a essentiellement retiré cette partie de la session, header() puis redirigés vers la page d'accueil.

Depuis peu, /logout.php fichier avec session_start() en haut ne voit pas en quelque sorte les informations de session lorsque print_r() est utilisé pour la sortie pour des fins de débogage.

Si je vais à une autre page, je vois l'info session très bien, mais pas sur la page de fermeture de session ... ce qui est exactement la raison pour laquelle je ne peux pas supprimer les informations de session, parce que ce n'est pas accessible.

Je pensais que $_SESSION était mondiale sur le site jusqu'à ce que le navigateur a été fermé. Je ne l'ai jamais eu cela arrive et je sais que l'instance de la session a été lancée sur cette page, il est bizarre que ça ne me montrant les données de session.

Toutes les idées? Je suis totalement perplexe sur celui-ci!

code: /logout.php

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

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

La vérification de $_SESSION['user'] est l'ensemble du site et je demande à divers éléments ci-dessous en cas de besoin pour des choses différentes. Quelqu'un construit autre ce site et je suis en train de déboguer pourquoi il ne fonctionne pas pour eux d'un seul coup.

Était-ce utile?

La solution

Accédez-vous à logout.php de même exactement domaine que vous définissez la session pour commencer (à savoir example.com par rapport à www.example.com/logout.php)

En ce qui concerne seulement les données de session MHS spécifiques, il serait préférable d'appeler session_destroy() et ensuite vos cookies désinitialiser pour tuer la session.

Autres conseils

Si le domaine / sous-domaine est le même que le reste de la page, je dirais que cela ressemble à une session typique par rapport à l'erreur de sortie. Assurez-vous d'avoir activé toutes les erreurs et de les afficher, comme vous l'avez imprimé sortie au client avant d'appeler session_start(). Ceci brisera la fonction et de faire des sessions indisponibles.

Pour résoudre le problème (si c'est le cas), vous devez supprimer toutes les sorties avant session_start. Même un espace avant <?php sera considérée comme une sortie par Apache (et d'autres). De plus, assurez-vous que vous avez désactivé BOM (Byte Order Mark) dans le document (un éditeur décent vous permettra de changer cela, regardez juste pour quelque chose comme « fichier en cours setings »).

Rappelez-vous toujours la première ligne de votre code PHP doit être session_start(); et rien d'autre. Si tout que vous allez faire est unset les variables de session et détruire la session, essayez de supprimer le require_once($_SERVER['DOCUMENT_ROOT'].'/includes/config.php'); et ajoutez le session_start () et le session_destroy () à la fin du fichier logout.php et voir si cela fonctionne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top