Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1908 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  try/catch en php non javalike?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

try/catch en php non javalike?

n°1413060
ammo
Posté le 25-07-2006 à 14:26:35  profilanswer
 

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

mood
Publicité
Posté le 25-07-2006 à 14:26:35  profilanswer
 

n°1413074
Sh@rdar
Ex-PhPéteur
Posté le 25-07-2006 à 14:32:21  profilanswer
 

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
n°1413078
anapajari
s/travail/glanding on hfr/gs;
Posté le 25-07-2006 à 14:35:49  profilanswer
 
n°1413079
ammo
Posté le 25-07-2006 à 14:36:11  profilanswer
 

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

n°1413081
ammo
Posté le 25-07-2006 à 14:37:02  profilanswer
 

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

n°1413083
Sh@rdar
Ex-PhPéteur
Posté le 25-07-2006 à 14:38:25  profilanswer
 

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
n°1413085
micfont999
Simplement Moi
Posté le 25-07-2006 à 14:38:51  profilanswer
 

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

n°1413087
ammo
Posté le 25-07-2006 à 14:42:01  profilanswer
 

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!

n°1413089
micfont999
Simplement Moi
Posté le 25-07-2006 à 14:45:36  profilanswer
 

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?

n°1413090
Sh@rdar
Ex-PhPéteur
Posté le 25-07-2006 à 14:47:46  profilanswer
 

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
mood
Publicité
Posté le 25-07-2006 à 14:47:46  profilanswer
 

n°1413093
Sh@rdar
Ex-PhPéteur
Posté le 25-07-2006 à 14:49:10  profilanswer
 

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
n°1413097
micfont999
Simplement Moi
Posté le 25-07-2006 à 14:54:34  profilanswer
 

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

n°1413102
Sh@rdar
Ex-PhPéteur
Posté le 25-07-2006 à 15:00:28  profilanswer
 

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
n°1413106
micfont999
Simplement Moi
Posté le 25-07-2006 à 15:03:17  profilanswer
 

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

n°1413108
ammo
Posté le 25-07-2006 à 15:04:17  profilanswer
 

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

n°1413110
Sh@rdar
Ex-PhPéteur
Posté le 25-07-2006 à 15:06:01  profilanswer
 

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
n°1413177
omega2
Posté le 25-07-2006 à 15:58:51  profilanswer
 

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
n°1413185
Sh@rdar
Ex-PhPéteur
Posté le 25-07-2006 à 16:07:47  profilanswer
 

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
n°1413186
ammo
Posté le 25-07-2006 à 16:07:51  profilanswer
 

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?

n°1413187
Sh@rdar
Ex-PhPéteur
Posté le 25-07-2006 à 16:08:50  profilanswer
 

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
n°1413188
ammo
Posté le 25-07-2006 à 16:11:00  profilanswer
 

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

n°1413190
Sh@rdar
Ex-PhPéteur
Posté le 25-07-2006 à 16:12:59  profilanswer
 

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
n°1413196
ammo
Posté le 25-07-2006 à 16:21:05  profilanswer
 

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
n°1413206
Sh@rdar
Ex-PhPéteur
Posté le 25-07-2006 à 16:26:40  profilanswer
 

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
n°1413210
ammo
Posté le 25-07-2006 à 16:30:02  profilanswer
 

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?

n°1413215
omega2
Posté le 25-07-2006 à 16:32:41  profilanswer
 

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)

n°1413216
Sh@rdar
Ex-PhPéteur
Posté le 25-07-2006 à 16:33:12  profilanswer
 

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
n°1413220
micfont999
Simplement Moi
Posté le 25-07-2006 à 16:40:39  profilanswer
 

Voili on en reviens au file existe et basta :)

n°1413224
zapan666
Tout est relatif
Posté le 25-07-2006 à 16:43:11  profilanswer
 

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 !
n°1413230
Sh@rdar
Ex-PhPéteur
Posté le 25-07-2006 à 16:45:45  profilanswer
 

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
n°1413234
omega2
Posté le 25-07-2006 à 16:48:02  profilanswer
 

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.

n°1413236
Sh@rdar
Ex-PhPéteur
Posté le 25-07-2006 à 16:50:08  profilanswer
 

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
n°1413242
omega2
Posté le 25-07-2006 à 16:54:08  profilanswer
 

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
n°1413259
Sh@rdar
Ex-PhPéteur
Posté le 25-07-2006 à 17:05:30  profilanswer
 

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
n°1413310
ammo
Posté le 25-07-2006 à 17:45:50  profilanswer
 

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

n°1413312
ammo
Posté le 25-07-2006 à 17:52:33  profilanswer
 

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

n°1413315
Sh@rdar
Ex-PhPéteur
Posté le 25-07-2006 à 17:54:48  profilanswer
 

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
n°1413613
omega2
Posté le 26-07-2006 à 10:12:02  profilanswer
 

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

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  try/catch en php non javalike?

 

Sujets relatifs
Try CatchTry / Catch / throw ou bien utilisation de int ?
ma servlet ne catch pas une exception lancée par mon EJBtry catch foireux
PHP : équivalent d'un try catch ?utilisation d'exception (try catch)
try - catch en C++probleme de try catch
Comment créer une page html dans un catchtry/catch et retour de fonction
Plus de sujets relatifs à : try/catch en php non javalike?


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)