Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonsoir,
Tout d'abord mon code :
<?php $authInstance = Zend_Auth::getInstance(); $defaultNamespace = new Zend_Session_Namespace('Default'); $isRegister = $defaultNamespace->isRegister; $isContact = $defaultNamespace->isContact; if ($authInstance->hasIdentity()) { echo $this->action('index' , 'menu'); } else { if ($isRegister == TRUE) { echo '<p class="bigtxt" align="justify">Votre inscription a bien été prise en charge.</p> <p align="justify"><br />Vous allez recevoir dans quelques secondes un email de confirmation.</p> <p><br /><a href="' . $this->url(array('controller'=>'index', 'action'=>'index')) . '">Retour à la page d\'accueil</a></p>'; Zend_Session::destroy(); } else { if ($isContact == TRUE) { echo '<p class="bigtxt" align="justify">Votre message a bien été envoyé.</p> <p><br /><a href="' . $this->url(array('controller'=>'index', 'action'=>'index')) . '">Retour à la page d\'accueil</a></p>'; Zend_Session::destroy(); } else { echo $this->action('index' , 'index'); } } } ?>
Ce code fonctionne... maintenant si je retire tout ce qui concerne Zend_Auth :
<?php $defaultNamespace = new Zend_Session_Namespace('Default'); $isRegister = $defaultNamespace->isRegister; $isContact = $defaultNamespace->isContact; if ($isRegister == TRUE) { echo '<p class="bigtxt" align="justify">Votre inscription a bien été prise en charge.</p> <p align="justify"><br />Vous allez recevoir dans quelques secondes un email de confirmation.</p> <p><br /><a href="' . $this->url(array('controller'=>'index', 'action'=>'index')) . '">Retour à la page d\'accueil</a></p>'; Zend_Session::destroy(); } else { if ($isContact == TRUE) { echo '<p class="bigtxt" align="justify">Votre message a bien été envoyé.</p> <p><br /><a href="' . $this->url(array('controller'=>'index', 'action'=>'index')) . '">Retour à la page d\'accueil</a></p>'; Zend_Session::destroy(); } else { echo $this->action('index' , 'index'); } } ?>
Alors le code ne fonctionne plus et j'ai l'erreur suivante :
Fatal error: Uncaught exception 'Zend_Session_Exception' with message 'The session was explicitly destroyed during this request, attempting to re-start is not allowed.'
( ! ) Zend_Session_Exception: The session was explicitly destroyed during this request, attempting to re-start is not allowed.
Ma question est pourquoi ? (Je ne comprends vraiment pas pourquoi ?)
Hors ligne
À mon avis, après l'exécution de ce code, tu essaies quelque par d'utiliser à nouveau les sessions ce qui provoque cette erreur.
Sinon, pourquoi utiliser Zend_Session::destroy ?
Hors ligne
Sinon j'ai une remarque sur ton code qui n'a rien à voir avec ton problème mais qui me semble absurde. En effet tu fais ce test
[lang=php]if ($isRegister == TRUE) { ...
Je voudrais juste t'alerter sur un test que tu fais qui est inutile. En effet, un if traite toujours un boolean puisque tu fais un test. Ce test va toujours te renvoyer true ou false.
Par exemple :
[lang=php] $maVariable = "toto"; if ($maVariable == "toto") // ce test renvoie toujours vrai { ... } if ($maVariable == "titi") // renvoi toujours false { ... }
Tu vois bien que dans mon exemple ci-dessus pour chaque test je récupère un boolean true ou false qui est interprété par le if.
Maintenant si je fais ceci :
[lang=php] $maVariable = true; if ($maVariable == true) { // ceci est absurde puisque $maVariable est déjà un boolean, c'est donc inutile de vérifier sa valeur puisque le test va me renvoyer de nouveau un boolean ... } // Il convient de faire ainsi : if ($maVariable) { ... }
Donc pour en revenir à ton bout de code (c'est la même chose pour $isContact) tu n'as pas besoin de vérifier la valeur du boolean puisque c'est déjà un boolean du coup tu peux te contenter de faire ceci et ça te coute un test en moins en plus d'être plus propre
[lang=php]if ($isRegister) {
Bonne continuation
Hors ligne