4 votes

Pourquoi ( $_SESSION = [] ;) rend le serveur incapable de traiter la requête ?

J'essaie d'effacer les variables d'une session et d'en démarrer une nouvelle. Après avoir lu des articles sur le problème des variables, je pense avoir découvert que c'est la bonne réponse :

( $_SESSION = [];)

Mais lorsque j'ajoute cette ligne à mon code, sur une ligne distincte du code PHP, j'obtiens un message indiquant que "[le serveur] n'est pas en mesure de traiter cette requête", ce qui signifie "HTTP ERROR 500".

Sans cette commande, la page fonctionne bien (sauf que les variables ne se comportent pas comme je le souhaite). Mais chaque fois que j'active cette ligne, j'obtiens l'erreur. Comment puis-je effacer les variables sans mettre le serveur en colère ?

Mise à jour : j'ai également essayé session_destroy(), mais cela a le même effet. Voici un peu plus de contexte :

<?php 
session_destroy();

session_set_cookie_params(3600,"/");
session_start();
?>

Si je mets en commentaire la ligne session_destroy(), la page se charge sans problème. Mais avec cette ligne, j'obtiens l'erreur.

Dernière mise à jour pour les autres personnes ayant cette question : J'ai marqué la bonne réponse. J'avais besoin de démarrer la nouvelle session avant d'annuler les variables de la dernière session.

1voto

Md. Nashir Uddin Points 454

Vous ne devez pas utiliser session_destroy() avant session_start(). Essayez ceci :

session_start(); session_set_cookie_params(3600,"/"); session_destroy();

0voto

Pour supprimer toutes les variables de session, utilisez :

session_unset(); 

si vous rencontrez des problèmes après la destruction de votre session, il est probable que votre code tente d'accéder à des variables de session qui n'ont pas été définies. J'aime vérifier avec isset() par exemple

$myVar = "";
if (isset($_SESSION('MyVar')) $MyVar = $_SESSION('MyVar');

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X