Exécution de code PHP

Résolu/Fermé
gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 - 6 mai 2009 à 05:02
Dr Zoidberg Messages postés 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 - 6 mai 2009 à 21:57
Bonjour,

je voulais savoir si une page PHP était lu dans son intégralité avant d'être éxécutée !
Voici un exemple :

<?php
header('location: ../');

echo 'Bonjour';
?> 


Par exemple, est-ce que elle aura quand même lu le fichier en entier avant de l'éxécuter.

Autrement-dit, est-il plus rapide de mettre une vérification (redirection en cas d'échec) au tout début du fichier, même avant le inclusions de fichiers que de le mettre à la fin ???

En gros, est-ce que il li quand même le code jusqu'à la fin ou il s'arrête sur ce genre d'opération et ne va pas plus loin ?!!!

A+

Gaerebut
A voir également:

9 réponses

empty Messages postés 837 Date d'inscription vendredi 25 juillet 2008 Statut Membre Dernière intervention 23 février 2016 176
6 mai 2009 à 08:37
Il lit tout le code, mais tu peux lui demander de s'arrêter avec exit(); je pense, mais c'est censé être utilisé dans les condition du style

if($etat == success) {
// code
} else {
// redirection
exit();
}

// autre code qui sera exécuté si success mais pas si unsuccess...
1
Bonjour

D'après son comportement, il lit le code complètement une première fois sans l'exécuter, puis il reprend au début pour l'exécution.
Ça ne change rien au fait que si tu fais une vérification au début de ton code, il sera toujours plus rapide que si tu le fais à la fin. Ton code sera lu une seule fois au lieu de deux
0
empty Messages postés 837 Date d'inscription vendredi 25 juillet 2008 Statut Membre Dernière intervention 23 février 2016 176
6 mai 2009 à 10:09
Peux tu concrétiser ce que tu avance ? Je ne vois pas dans quel cas PHP lit 2x le code... Tu sais nous écrire un petit bout de code ?
0
gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 171
6 mai 2009 à 10:40
Oui moi je vois de quoi il parle !

Par exemple, tu mets un exit en début de page et après tu mets un echo "salut" mais sans ; (donc erreur).
L'erreur sera relevé alors que le programme se termine plus tôt !

:=)

A+

Gaerebut
0
Merci d'avoir répondu pour moi (j'ai été pris ailleurs). Ton exemple est parfait.
0
empty Messages postés 837 Date d'inscription vendredi 25 juillet 2008 Statut Membre Dernière intervention 23 février 2016 176
6 mai 2009 à 11:40
Justement pas... Je viens de faire le test pour voir si ce que j'avance est vrai... PHP ne lit pas d'abord. Il exécute directement. Essaye si tu veux la méthode ci-dessous.

Code

<?php

echo "hello";

exit();

echo fkldms;

?>


Résultat

hello

----------------------------------------------------------------------------

Code

<?php

echo "hello";

echo fkldms;

?>


Résultat

hello
Notice: Use of undefined constant fkldms - assumed 'fkldms' in C:\wamp\www\test\index.php on line 5
fkldms



PS
J'ai en fait volontairement oublié les guillemet.
0
Il a tout lu une première fois en analysant le code sans l'exécuter; il l'a exécuté lors de la deuxième fois
Introduis une erreur après le exit comme l'a suggéré gaerebut. D'après toi, elle ne devrait pas être détectée. Essaye.
0
empty Messages postés 837 Date d'inscription vendredi 25 juillet 2008 Statut Membre Dernière intervention 23 février 2016 176
6 mai 2009 à 11:58
Lis ce que j'ai écrit avant de répondre ça :-) J'ai fait un exemple dans mon message essaye le :-) il exécute directement (sans lire tout le code au-par-avant)...

Car quand je met mon erreur après exit(); il ne me l'affiche pas et lorsque je retire exit(); il m'affiche une notice.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dr Zoidberg Messages postés 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 100
6 mai 2009 à 12:11
le père à raison, PHP lit tout un fois et fait l'analyse syntaxique, c'est la qu'il va faire les include et retourner les parse error entre autre, mais à ce niveau il n'en a rien à faire des variables, exit, et autres commandes;
A la deuxième lecture il exécute.

un exemple:
echo $test;
exit;
echo 'test2'

Donne : Parse error: syntax error, unexpected $end, expecting ',' or ';'
Il a tout lu jusqu'a la fin est a trouvé l'erreur du ; manquant;
Pas de notice sur la variable non définie car il ne l'a pas vérifiée à la première lecture
En corrigeant l'erreur:
echo $test;
exit;
echo 'test2';

Notice: Undefined variable: test
A l'exécution il s'arrête bien au exit.
0
empty Messages postés 837 Date d'inscription vendredi 25 juillet 2008 Statut Membre Dernière intervention 23 février 2016 176
6 mai 2009 à 13:01
J'AI RAISON :-) (sans crier lol) je m'explique, tu as oublié les parenthèses, et oui en programmation un simple oubli peut tout changer...

Donc exit(); et non exit;

Pas tout lu mon message en détail ^^ il suffisait de faire copier coller pourtant...
0
Dr Zoidberg Messages postés 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 100
6 mai 2009 à 21:57
Juste pour info exit (tout court) est valable (voir l'exemple https://www.php.net/exit et synonyme de exit() et exit(0).
Mais je l'avoue ce n'est peut-être pas la syntaxe la plus propre, juste une habitude de ma part.

a+
0
Dr Zoidberg Messages postés 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 100
6 mai 2009 à 13:31
Bien sur que si et c'est bien la même chose, dans ton 1er exemple il s'arrête au exit sans lire la suite, mais ça n'empêche pas qu'il est déjà fait une lecture précédemment POUR LA VERIF DE SYNTAXE et tu n'as pas d'erreur de syntaxe. Dans le 2eme exemple il va à la fin et trouve l'erreur de constante. Je ne vois pas ce que ca prouve.
0
Je précise car je ne suis pas sûr que tout le monde (empty en particulier) te suive sur l'erreur de constante
Dans le programme donné message 6, il n'y a aucune raison d'afficher une erreur à la première passe, car il n'y a pas d'erreur de syntaxe.
fkldms pourrait être une constante définie plus loin dans le script par define ('fkldms', 'qqchose');. Il serait donc prématuré d'afficher une erreur dès la première passe.
Par contre, à la seconde passe, il y a une erreur parce qu'au moment d'exécuter l'instruction, fkldms n'est toujours pas défini, alors qu'il est indispensable pour l'exécution.
0
empty Messages postés 837 Date d'inscription vendredi 25 juillet 2008 Statut Membre Dernière intervention 23 février 2016 176
6 mai 2009 à 15:25
D'accord autant pour moi ^^ j'ai testé toutes les erreurs possible et celle qui n'est pas bloquée par exit(); est l'erreur lié au parsing "Parse error"...

Les notices et warnings sont bloqué par exit...

Donc parfaitement d'accord il lit pour voir si la syntaxe est correcte :-)

Mais important à retenir que les notices et warnings (erreur mineures) ne sont pas pris en compte en cas de exit(); avant...
0