Effacer la variable de session après utilisation
Est-il possible d'utiliser une variable de session, puis annuler directement après?
Exemple:
//====
//Process Form
if ($_POST['Submit']) {
$update = $userSettings->update($_POST);
//If there are form errors
if (!$update) {
//Load the errors into an array
$errors = $update[1];
} else {
//Set the session
$_SESSION['showUpdated'] = true;
//Redirect to this page
header("Location: http://www.mysite.com/settings");
}
}
//==================
if ($_SESSION['showUpdated']) {
echo "Settings Updated";
unset($_SESSION['showUpdated'];
}
Donc, une fois que le formulaire est soumis, si il n'y a pas d'erreurs:
- Définir une session à-dire la soumission du formulaire était bien
- Recharger la page (pour éviter de re-soumis des données POST)
- Si le "showUpdated' variable de session est définie, l'affichage de la "mise à Jour" message
- De désactiver la variable de session (afin de ne pas voir le message sur le prochain rechargement)
Actuellement le problème est, si vous enlevez la variable de session tout de suite après, C'est comme si vous avez de l'onu-devant le "s'il existe" une partie.
Toutes les solutions? Est-ce vraiment la meilleure façon de le faire?
Merci beaucoup!
source d'informationauteur steveneaston
Vous devez vous connecter pour publier un commentaire.
Qui ressemble comme il devrait fonctionner. Assurez-vous d'appeler session_start() avant d'essayer d'utiliser la session, et toujours exit() ou die() après une redirection en-tête.
Je accomplir ce que vous êtes en train de faire un peu différemment. Je garde un 'message' élément de la session. Je vais coller le texte dans aimer "Vos données ont été enregistrées", les messages d'erreur, etc. Ensuite, sur chaque page (en fait, dans un modèle de page de la classe), je vérifie pour voir si le
$_SESSION['message']
est définie et n'est pas vide. Si il y a quelque chose là, j'ai l'affichage du message et de définir la valeur à une chaîne vide ou null.J'ai remarqué une petite erreur dans l'exemple original qui pourrait causer d'autres problèmes.
doit être
Pas compris que la fin de
)
dans leunset
provoquera une erreur.Je le fais de temps en temps. Je n'ai jamais eu de problèmes avec elle. Mais ce que je voudrais ajouter à la vôtre est une
exit()
appel de fonction après l'en-tête de redirection.EDIT: La raison de la
exit()
c'est qu'il va l'empêcher de traiter tout autre code et à éliminer la possibilité de la désactiver avant de vous voulu vérifier après la redirection.L'en-tête d'un appel sans une sortie après la volonté de poursuivre l'exécution de la page.
À l'aide de ce lieu, doit tuer la page et de ne pas annuler la variable de session sur la même page d'appel.
Juste vérifier pour voir si elle existe. C'est sécuritaire de le faire avant qu'il a été défini et que vous dira votre réponse après qu'il a été défini.
Ou vous pouvez simplement le mettre à false.
Et il semble que vous utilisez la plus petite version de PHP que 5.3, parce que dans 5.3 vous aurez remarquez lorsque vous utilisez valeur non initialisée. Donc, vous devez utiliser la fonction isset fonction: