J'utilise le code suivant pour invalider la session. J'ai lié à une fois que la session est invalidée, je souhaite ouvrir la page AVERTISSEMENT: Session_Destroy () [Fonction.Session-Détruire]: Essayer de détruire une session non assurée dans C: \ Xampp \ htdocs \ Selection \ Logout.php sur la ligne 3 P>
AVERTISSEMENT: impossible de modifier les informations d'en-tête - Les en-têtes déjà envoyés par (sortie démarré à C: \ xampp \ htdocs \ selection \ logout.php: 3) dans c: \ xampp \ htdocs \ selection \ logout.php sur la ligne 4 < / p>
blockQuote> Qu'est-ce qui ne va pas? P> P> logout.php code> dans de nombreuses pages. Si ce lien de déconnexion est cliqué sur la page
logout.php code> est appelé. Ce qui suit est le code dans
logout.php code>.
index.php code>.
Mais je reçois l'erreur suivante: p>
5 Réponses :
Je pense que vous ne pouvez pas avoir appelé la fonction session_start () code> avant de détruire la session. p>
Merci de toute façon que la session_start () doit être appelée au début du script.
Vous devez appeler session_start () en haut de la page pour rappeler à PHP que ce Pagecall appartient à la session. - au moins Manuel PHP le dit. P>
Les notes sur cette page manuelle donnent un indice, que Session_unset () ne doit être utilisée que dans des environnements plus anciens qui n'utilisent pas une variable $ _Session. P>
Vous devez d'abord ouvrir la session:
header('Location: index.php'); session_start(); session_unset(); session_destroy();
Je pense que la redirection doit être placée à la fin, car écrit le code comme celui-ci, le script fait la redirection et n'exécute pas les autres fonctions.
Cela ne fonctionne que comme prévu car le script termine toujours l'exécution après l'envoi de l'en-tête. Cependant, vous devriez placer l'en-tête après la détruite de la session pour réduire la confusion du code.
Le problème est que vous ne pouvez pas détruire une session qui n'a pas été lancée. Cela soulève alors un avertissement qui est écho au navigateur. Le problème suivant est que vous ne pouvez pas envoyer en-têtes après avoir été émis sur le navigateur, il augmente un autre avertissement.
Il vous suffit de vérifier si une session existe d'abord: P>
if (session_name() != '') { session_destroy(); }
Vous devez toujours utiliser session_start (); Avant d'utiliser une fonction de session / variable. Démarrez donc tous les fichiers PHP avec session_start () ;. Aussi logout.php: Vous n'avez pas non plus besoin de le déséfini. P> p>
La documentation PHP affirme très clairement essuyer manuellement le tableau $ _session avec _ session = tableau (); code>. Pourquoi dites-vous que vous n'avez pas besoin de le déséfinir. C'est la documentation que je fais référence à .