Aller au contenu

Sujets conseillés

Posté

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' !!!

:wacko:

Quelqu'un a une explication ???

Posté

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 :)

Posté

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+

Posté (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é par patdembe
Posté

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.

Posté

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...) !

Posté

De plus il y'a un espace entre SESSION et [

$_SESSION ['test'] = 'OK';

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...