OVH Cloud OVH Cloud

Gestion d'erreur & question securite

1 réponse
Avatar
Tyrion
Bonjour à tous,

dans le cadre d'un developpement professionnel, je me pose quelques
questions métaphysiques (toujours comme ça ;)

mon archi est la suivante :

index.php
=> inclus mes routines
=> entete
=> affiche la page voulu suivant la valeur de la variable page (via
tableau associatif) (1)
=> bas (2)

Mon problème(?) est lorsqu'un problème surgit en (1), je fait un exit,
l'effet qui en découle est que le bas de page n'apparaît...

Une solution a laquelle j'envisage est d'appeler une fonction du style
end_page() au lieu du exit dans ma gestion d'erreur.
cette même méthode serait aussi appelé à la fin d'index.php (2)


Cordialement,
Tyrion

1 réponse

Avatar
Jean-Marc Molina
Tyrion a écrit/wrote :
Mon problème(?) est lorsqu'un problème surgit en (1), je fait un exit,
l'effet qui en découle est que le bas de page n'apparaît...


En effet exit et die terminent l'exécution du script. Une solution consiste
à tester les erreurs avec un if plutôt qu'à terminer le script. Si une
erreur survient on affiche un message d'erreur mais on poursuit l'exécution
d'une script, le reste du script ignore les traitements vu qu'une erreur est
survenue. Si chaque fonction retourne un code d'erreur, par exemple VRAI
pour pas d'erreur et FALSE en cas d'erreur, tout le monde est au courant
qu'une erreur a eu lieu.

Une solution a laquelle j'envisage est d'appeler une fonction du style
end_page() au lieu du exit dans ma gestion d'erreur.
cette même méthode serait aussi appelé à la fin d'index.php (2)


C'est une solution que j'utilisais à mes débuts mais franchement c'est pas
très propre. Il n'est pas normal qu'à un endroit on décide brutalement de
stopper l'exécution du script. Il vaut mieux continuer et tester les
erreurs. Cela permet par exemple d'afficher les erreurs de saisie dans un
formulaire mais d'afficher le formulaire pré-rempli par la suite... Un die
ficherait tout par terre. Et en prime on se retrouve avec ton beau pied de
page :).

--
Jean-Marc.