try/catch en php non javalike?

try/catch en php non javalike? - PHP - Programmation

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  :hello:  
Ammo

Reply

Marsh Posté le 25-07-2006 à 14:26:35   

Reply

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 @


Message édité par Sh@rdar le 25-07-2006 à 14:34:01

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 25-07-2006 à 14:35:49    

Reply

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

Reply

Marsh Posté le 25-07-2006 à 14:37:02    

Version php5, je vais regarder ton lien anaparaji, merci a toi aussi!

Reply

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


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

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 -_- ....

Reply

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!

Reply

Marsh Posté le 25-07-2006 à 14:45:36    

Mais la prog oo c'est bien mangez en :p  
 
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?

Reply

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


Message édité par Sh@rdar le 25-07-2006 à 14:53:05

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 25-07-2006 à 14:47:46   

Reply

Marsh Posté le 25-07-2006 à 14:49:10    

micfont999 a écrit :

Mais la prog oo c'est bien mangez en :p  
 
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?


 
fichier inexistant, droits restreints, je sais pas ce que donne le retour avec une erreur dans le fichier inclus


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

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

Reply

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  [:pingouino] 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 :o
 


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 25-07-2006 à 15:03:17    

oki :) je me coucherais moins con ce soir tiens :)

Reply

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

Reply

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


Message édité par Sh@rdar le 25-07-2006 à 15:08:10

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

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.


Message édité par omega2 le 25-07-2006 à 15:59:48
Reply

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) [:joce]


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

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?

Reply

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...
on peut savoir si une url a changé et a été relancée par l'utilisateur?


 
 
juste pour ça :??:
 
un système d'include bien codé te mets à l'abri de telles manipulations [:mlc]


Message édité par Sh@rdar le 25-07-2006 à 16:08:57

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 25-07-2006 à 16:11:00    

include($_GET['mavariable']);
ca protége de quoi ??? oO

Reply

Marsh 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 ?


Message édité par Sh@rdar le 25-07-2006 à 16:15:52

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

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 :p
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é... ^^ :lol:


Message édité par ammo le 25-07-2006 à 16:24:07
Reply

Marsh Posté le 25-07-2006 à 16:26:40    

nan mais tu peux le jeter sur la homepage hein, site perso ou pro  [:kiki]  
 

Code :
  1. if (!file_exists('/homedemonsite/rep/page/'.$zepage)) {
  2. $zepage = 'pagepardefaut';
  3. // ajouter ici un log quelconque
  4. }
  5. include_once ('/homedemonsite/rep/page/'.$zepage);


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

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 :p
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?

Reply

Marsh Posté le 25-07-2006 à 16:32:41    

ammo a écrit :

include($_GET['mavariable']);
ca protége de quoi ??? oO


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)

Reply

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 :


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.  


 
c'est le plugin d'harko ;) http://harko.free.fr/soft


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 25-07-2006 à 16:40:39    

Voili on en reviens au file existe et basta :)

Reply

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  [:kiki]  
 

Code :
  1. if (!file_exists('/homedemonsite/rep/page/'.$zepage)) {
  2. $zepage = 'pagepardefaut';
  3. // ajouter ici un log quelconque
  4. }
  5. include_once ('/homedemonsite/rep/page/'.$zepage);



Ton code comporte une faille :
 
si $zepage = monfichieravecmesmotsdepasse.php, bah, il te l'inclu [:petrus75]
d'ailleurs, . et .. ca doit aussi marche

Message cité 1 fois
Message édité par zapan666 le 25-07-2006 à 16:43:50

---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 25-07-2006 à 16:45:45    

zapan666 a écrit :

Ton code comporte une faille :
 
si $zepage = monfichieravecmesmotsdepasse.php, bah, il te l'inclu [:petrus75]
d'ailleurs, . et .. peut etre marche aussi [:petrus75]


 
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 [:petrus]
 
 
 


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

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  [:kiki]  
 

Code :
  1. if (!file_exists('/homedemonsite/rep/page/'.$zepage)) {
  2. $zepage = 'pagepardefaut';
  3. // ajouter ici un log quelconque
  4. }
  5. include_once ('/homedemonsite/rep/page/'.$zepage);



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.

Reply

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 :o
 
RE EDIT : en plus j'utilise toujours 2 variables, une de section et une de page, dont une qui est codée en dur


Message édité par Sh@rdar le 25-07-2006 à 16:54:50

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

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. :p
 
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.  :whistle: Enfin me semble. [:atlantis]
 
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. :p


Message édité par omega2 le 25-07-2006 à 16:57:06
Reply

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 :o)
 
faites pas chier j'ai mal aux dents :o


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

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

Reply

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 :o " 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 :p vtt, pour ceux qui veulent venir (ca spasse en isère ;) )
Ammo

Reply

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 [:spamafote]


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 26-07-2006 à 10:12:02    

Sh@rdar a écrit :

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 [:spamafote]

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

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed