patdembe Posté 3 Mai 2007 Posté 3 Mai 2007 Imaginez que dans INDEX.PHP, vous avez les instructions suivantes : <?php session_start(); $_SESSION ['test'] = 'OK'; header('location:print.php'); $_SESSION['test'] = 'NOT OK'; ?> Et dans PRINT.PHP, il y a simplement : <?php session_start(); echo $_SESSION['test']; ?> A votre avis, quel sera le resultat de l'echo ? 'OK', évidemment... Eh bien non, vous obtennez 'NOT OK' !!! Quelqu'un a une explication ???
Anonymus Posté 3 Mai 2007 Posté 3 Mai 2007 Ce qui est étonnant, c'est que ton header marche : header('location:print.php'); J'aurais plutot vu ca comme ceci : header('Location: print.php'); Sinon, il faut savoir que le header n'empèche pas l'exécution du script qui se trouve derrière, d'où l'utilité d'exécuter die() après header
patdembe Posté 3 Mai 2007 Auteur Posté 3 Mai 2007 Merci ! Avec die(), on obtiens en effet un résultat plus conforme aux attentes...
f_trt Posté 3 Mai 2007 Posté 3 Mai 2007 C'est normal pour moi header('location:print.php'); ne veut pas dire fin du script le script continue a s'executer il faut pour être sur a mon avis toujours faire header('location:print.php'); exit; A+
patdembe Posté 3 Mai 2007 Auteur Posté 3 Mai 2007 (modifié) Salut ! dire que le script continue ou s'interrompt après header n'est pas vraiment vrai. Ainsi, les echos qui suivent ce header ne sont pas pris en compte, les appels mysql non plus. Par contre, les opérations sur les variables sessions,elles, le seront. Ok, si on met die() ou exit; le problème est réglé, mais tout cela ne me semble pas très logique... header('location... '); n'est si un branchement inconditionnel (goto), ni un appel de sous-routine. Alors, c'est quoi exactement ??? Modifié 3 Mai 2007 par patdembe
f_trt Posté 3 Mai 2007 Posté 3 Mai 2007 Les echo c'est normal vu le header envoyé le navigateur ne prendra plus rien en compte par contre les appels mysql je te fais confiance si tu le dis c'est que tu as essayé moi j'aurais parié qu'il se ferait quand même donc je prend note aussi de toute façon j'ai pris l'habitude de me servir de header comme si c'etait une branchement et donc je fais tjrs un exit derrière il n'empêche que ce que tu soulèves est bon a savoir pour éviter de chercher un jour.
patdembe Posté 3 Mai 2007 Auteur Posté 3 Mai 2007 Pris d'un doute, je viens de réessayer : tu as raison, les opérations mysql sont exécutées après le header('location...) !
Kent Posté 3 Mai 2007 Posté 3 Mai 2007 De plus il y'a un espace entre SESSION et [ $_SESSION ['test'] = 'OK';
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant