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
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
A voir également:
- Exécution de code PHP
- Code ascii de a - Guide
- Code puk bloqué - Guide
- Code de déverrouillage oublié - Guide
- Code activation windows 10 - Guide
- Code gta 4 ps4 - Guide
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
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...
if($etat == success) {
// code
} else {
// redirection
exit();
}
// autre code qui sera exécuté si success mais pas si unsuccess...
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
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
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
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 ?
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
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
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
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
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.
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.
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.
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.
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
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.
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.
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
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:
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:
Notice: Undefined variable: test
A l'exécution il s'arrête bien au exit.
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.
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
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...
Donc exit(); et non exit;
Pas tout lu mon message en détail ^^ il suffisait de faire copier coller pourtant...
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
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+
Mais je l'avoue ce n'est peut-être pas la syntaxe la plus propre, juste une habitude de ma part.
a+
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
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.
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.
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.
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
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...
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...