try/catch en php non javalike? - PHP - Programmation
Marsh Posté le 25-07-2006 à 14:32:21
pas possible
ce que tu peux faire c'est générer un retour à la fin de ton fichier inclus et donc tester après
y'a des des exemples sur la doc
http://fr.php.net/include
par contre, il me semble tu ne peux pas désactiver l'erreur en cas d'inclusion foireuse (à moins de couper complètement le retour d'erreur) donc il est conseillé d'utiliser @
Marsh Posté le 25-07-2006 à 14:35:49
quelle version de php???
php5: http://fr.php.net/manual/fr/language.exceptions.php
php4: http://fr.php.net/set_error_handler
Marsh Posté le 25-07-2006 à 14:36:11
D'accord, merci, pourtant dans la doc ils ont mit en mots reservés du langage try et catch... c'etait pour plaisanter peut être ;-)
sinon meme dans les classes c'est pas possible comme syntaxe?
Merci !!
Marsh Posté le 25-07-2006 à 14:37:02
Version php5, je vais regarder ton lien anaparaji, merci a toi aussi!
Marsh Posté le 25-07-2006 à 14:38:25
nan mais même si tu peux utiliser ça avec de l'objet ça va pas te servir des masses
avec include / require la portée du script inclus va merder...
Marsh Posté le 25-07-2006 à 14:38:51
Non mais en php5 c'est tout à fait possible je pense, par contre en php4 pas de try catch .. c'est le but d'avoir reconverti le php5 en langage objet
Par contre vive les hebergeurs où l'on doit mettre .php5 à chaque page pour que ça fonctionne -_- ....
Marsh Posté le 25-07-2006 à 14:42:01
Visiblement le try catch est bon que quand on programme OO, pour le include comme il ne sagit pas d'exception ca donne rien...
mettre php5 partout... ca rappel le php3. Je crois que mon hébergeur ne demande pas cela, je ne tarderais plus a le savoir!
Marsh Posté le 25-07-2006 à 14:45:36
Mais la prog oo c'est bien mangez en
Et t'a pas une fonction php qui pourrais te dire si la page est possiblement incluable (pas français je sais )
Pourquoi il n'arriverais pas à faire le include? Fichier non existant?
Marsh Posté le 25-07-2006 à 14:47:46
ammo a écrit : Visiblement le try catch est bon que quand on programme OO, pour le include comme il ne sagit pas d'exception ca donne rien... |
c'est ce que je voulais dire, et dans tous les cas tu vas être coincé par la portée du script inclus
j'utilise pas trop le error_handler, tu devrais regarder de ce coté là (même si le return est encore ce qu'il y a de plus simple / rapide), à noter quand même qu'il faudra rester sur include, vu que require génère une erreur fatale et qu'on ne peut la gérer
Marsh Posté le 25-07-2006 à 14:49:10
micfont999 a écrit : Mais la prog oo c'est bien mangez en |
fichier inexistant, droits restreints, je sais pas ce que donne le retour avec une erreur dans le fichier inclus
Marsh Posté le 25-07-2006 à 14:54:34
Sh@rdar a écrit : fichier inexistant, droits restreints, je sais pas ce que donne le retour avec une erreur dans le fichier inclus |
Ouaip mais dans ces cas la faire des test fopen du fichier à inclure avec et si on à un soucis on passe à autre chose ... Non ? je dis peut etre une connerie mais ça semblerais etre une solution .. on peut pas ouvrir le truc pouf on inclus autre chose ..
Si après on veux voir si le fichier renvoi des warning et des notices dois y avoir moyen de pondre ça en php5 je pense, c'est forcement une exception à capter à un moment ou à un autre avec le error_handler ...
Enfin je dis ça je suis pas un pro en php objet hein, moi je tourne plutot à la 3D pour me chouter perso
Marsh Posté le 25-07-2006 à 15:00:28
le try / catch c'est surtout pour simplifier la gestion d'erreur en POO
pour utiliser ça sur include tu ne peux pas utiliser d'objet ni de fonction (sinon le code inclus se retrouve dans ta classe / fonction) alors il faut se palucher du code procédural pour chaque appel (pas des masses pratique)
ouvrir un pointeur pour chaque fichier inclus ? euh on peut toujours tester l'existence du fichier, mais ça s'arrêtera là
le set_error_handler peut aider à attraper des erreurs comme ça, mais là c'est plus du php5 justement et je ne connais pas le comportement pour une erreur dans le fichier appelé
de toute façon, moi j'utilise require_once() comme ça si y'a pas, on coupe tout et basta
Marsh Posté le 25-07-2006 à 15:04:17
Pas bete du tout cette idée de test sur le fichier, file_exists est ton ami! ca devrait être bon
perso là je me shoot pas vraiment, c'est professionnel
Marsh Posté le 25-07-2006 à 15:06:01
en même temps j'ai du mal à concevoir à quoi peut servir un truc pareil (include le fichier Y si le fichier X n'est pas inclus)
à noter : gaffe aux permissions / restrictions, tu peux très bien avoir un fichier qui existe mais impossible à inclure mais là ça devient de l'enculage de mouche
Marsh Posté le 25-07-2006 à 15:58:51
Sh@rdar > A la limite, je comprendrais ça pour un systéme de log des erreurs d'inclusions (si fichier pas inclus, on inclus le fichier qui contient ma fonction permettant de le signaler dans un log)
Autre solution, il veut faire ça pour éviter d'exécuter du code faisant appel aux fonctions du fichier inclus et celà en évitant d'avoir un message d'erreur dans son navigateur.
Marsh Posté le 25-07-2006 à 16:07:47
mouais.. je suis pas trop convaincu
perso je préfère couper court plutôt que de devoir faire tout un bouzin si jamais il manque un fichier parmi la dizaine requis (ce qui de toute façon rend le script plus que bancale)
Marsh Posté le 25-07-2006 à 16:07:51
Je veux faire ca parce que mon site fonction en include...et donc si un petit malin change la variable d'url...badaboum erreur! je crois qu'il y a des moyens pour prevenir de ce genre d'erreur mais moi j'ai pensé à cela...
on peut savoir si une url a changé et a été relancée par l'utilisateur?
Marsh Posté le 25-07-2006 à 16:08:50
ammo a écrit : Je veux faire ca parce que mon site fonction en include...et donc si un petit malin change la variable d'url...badaboum erreur! je crois qu'il y a des moyens pour prevenir de ce genre d'erreur mais moi j'ai pensé à cela... |
juste pour ça
un système d'include bien codé te mets à l'abri de telles manipulations
Marsh Posté le 25-07-2006 à 16:11:00
ReplyMarsh Posté le 25-07-2006 à 16:12:59
bin justement de rien..
mais chercher à attraper l'erreur et à inclure autre chose c'est balot, autant inclure direct ce qui va bien et jetter le visiteur si il fait mumuse non ?
'fin, je veux dire on a l'impression de raisonner à l'envers là non ?
Marsh Posté le 25-07-2006 à 16:21:05
mais si le mec change l'url (intentionnellement ou pas) il se retrouve avec une page jaune... et rien, bon il a plus qu'a recliquer sur un lien, mais ca me plaisait bien de lui remettre l'accueil...
ne raisonne pas comme ca :"jetter le visiteur si il fait mumuse non ?" si tu veux un jour que les gens viennent sur ton site pour un site perso ca me va, un site pro... c'est laid
moi je pensais me faire un peu jetter avec ma question de try catch et je vois que je reveil un vieux débat enflammé... ^^
Marsh Posté le 25-07-2006 à 16:26:40
nan mais tu peux le jeter sur la homepage hein, site perso ou pro
Code :
|
Marsh Posté le 25-07-2006 à 16:30:02
comme je disais file_exists est ton ami !
voilà une solution qu'elle est belle, qu'elle protége et qu'elle est pas en try catch
Merci à tous, ce post fut bien interessant, on va ptetre essayer d'y mettre fin avant que ca change de sujet ^^
Ammo
ps : Sh@ardar c'est quoi le trip de mettre ce que tu écoutes? comment t'as intéragit avec le forum? y a une option toute faite?
Marsh Posté le 25-07-2006 à 16:32:41
ammo a écrit : include($_GET['mavariable']); |
Super si tu protéges par un simple try catch alors je peux faire exécuter tout ce que je veux à ton site simplement en lui faisant inclure un fichier texte hébergé sur un autre serveur ($_GET['mavariable'] contenant du texte commencant par ftp:// ou http:// par exemple)
Marsh Posté le 25-07-2006 à 16:33:12
tu noteras quand même que ça n'a plus rien à voir avec ta demande d'origine
Citation : |
c'est le plugin d'harko http://harko.free.fr/soft
Marsh Posté le 25-07-2006 à 16:43:11
Sh@rdar a écrit : nan mais tu peux le jeter sur la homepage hein, site perso ou pro
|
Ton code comporte une faille :
si $zepage = monfichieravecmesmotsdepasse.php, bah, il te l'inclu
d'ailleurs, . et .. ca doit aussi marche
Marsh Posté le 25-07-2006 à 16:45:45
zapan666 a écrit : Ton code comporte une faille : |
ouais et si en plus c'est un fichier texte et que tu colle tout ça ailleurs que dans une variable ou une constante, ça va les afficher
Marsh Posté le 25-07-2006 à 16:48:02
Sh@rdar a écrit : nan mais tu peux le jeter sur la homepage hein, site perso ou pro
|
Attention à la mini faille du "je m'inclus moi même".
C'est un coup à atteindre le maximum de mémoire autorisé par page php et en cas de plusieurs demande simultanée, ca risque de faire saturer la mémoire de la machine et de ralentir trés fortement les autres visiteurs voire les empécher d'obtenir une page compléte faute d'assez de mémoiire libre.
Marsh Posté le 25-07-2006 à 16:50:08
nan mais c'est un exemple hein..
EDIT : de toute façon, en séparant bien les pages (ie ailleurs qu'à la racine) le coup de l'inclusion en boucle est impossible, ça franchira jamais le test
RE EDIT : en plus j'utilise toujours 2 variables, une de section et une de page, dont une qui est codée en dur
Marsh Posté le 25-07-2006 à 16:54:08
Le probléme avec les exemple pas tout protégé, c'est quand un débutant l'utilise en se pensant à l'abris de tout. mieux vaut prévenir que de les voir revenir en pleurant.
EDIT : Rare sont les débutants qui ont un serveur personnel permettant de faire des répertoire virtuels et qui empéchent donc de s'appeller en boucle. Enfin me semble.
EDIT 2 : Si t'utilise un code différent de celui que t'as posté, alors on ne parle pas de celui que t'utilise.
Marsh Posté le 25-07-2006 à 17:05:30
nan mais merde quoi, de toute façon try / catch même si c'est plus le sujet les noobs viendront pas (et puis ils ont qu'à se démmerder plutôt que de copier / coller )
faites pas chier j'ai mal aux dents
Marsh Posté le 25-07-2006 à 17:45:50
bien vu omega2... voilà le genre de chose auquel je ne pense pas...je vois que tu fais partie de ceux qui pense à comment nuir aux autres... je plaisante!
Sinon Shadar si ca reste en accord avec ma demande, c'est juste que je n'avais pas précisé le but, le code que tu me donnes fais bien ce que tu cites de mon post... Enfin là c'est bon je crois le probléme est résolu, je verrais si je vous donne l'url pour essayer d'hacker la page
Marsh Posté le 25-07-2006 à 17:52:33
Relaxe les gens... moi je prend tous les conseils, surtout que a ce niveau je suis considérable comme débutant, la sécurité web etc ca me passionne pas vraiment...une erreur je le sais. La vous m'avez fait penser a plein de choses, j'essaierais d'être plus préventif dorénavant.
-->"de toute façon, en séparant bien les pages (ie ailleurs qu'à la racine) le coup de l'inclusion en boucle est impossible, ça franchira jamais le test " parce que tu vas atteindre un chemin trop long?
encore merci tout le monde, je vais regarder mieux a ca demain, finit le boulot pour aujourd'hui, maintenant c'est détente vtt, pour ceux qui veulent venir (ca spasse en isère )
Ammo
Marsh Posté le 25-07-2006 à 17:54:48
non rien à voir avec la taille du chemin
de toute façon, avec include_once et en bloquant bien le répertoire où aller chercher la page ça évite bien des problèmes c'est tout
Marsh Posté le 26-07-2006 à 10:12:02
Sh@rdar a écrit : non rien à voir avec la taille du chemin |
Ca c'est sur qu'avec include_once, il n'est plus possible de faire d'inclusion en boucle du même fichier et en vérifiant le dossier d'inclusion, on régle le probléme il est vrai.
ammo a écrit : bien vu omega2... voilà le genre de chose auquel je ne pense pas...je vois que tu fais partie de ceux qui pense à comment nuir aux autres... |
Et oui, comme le disent les méga doué de la sécurité : c'est en sachant comment font les hacker qu'on peut les contrer.
ammo a écrit : je plaisante! |
Ca, je m'en étais douté.
PS : Il y a des failles plus répendus que d'autres, normal qu'on prévienne quand on les voit.
Marsh Posté le 25-07-2006 à 14:26:35
Bonjour tout le monde!!!
alors mon probléme est simple je fais un include sur une page mais lorsque celui ne réussi pas je souhaite inclure une autre page.
Seulement je n'arrive pas a récuperer le code de retour de include, il semble qu'il faille faire un try catch, je ne trouve rien dans la doc de nexen a ce sujet,
j'ai tenté comme en java mais je ne trouve pas, je sais juste que l'erreur a attraper et E_WARNING.
voilà, merci de juste me donner un exemple
Ammo