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

  FORUM HardWare.fr
  Programmation
  PHP

  gestion des erreurs

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

gestion des erreurs

n°1817850
majong
Posté le 27-11-2008 à 16:52:53  profilanswer
 

Bonjour, il arrive que '$lien' bloque ou que 'title' n'existe pas, comment faire pour éviter que le site continue son traitement ?
code:

Code :
  1. $ch = curl_init($lien);
  2. curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
  3. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  4. curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  5. if ($userpwd) curl_setopt($ch, CURLOPT_USERPWD, $userpwd);
  6. $contenu = curl_exec($ch);
  7. curl_close($ch);
  8. $doc = @DOMDocument::loadXML($contenu);
  9. $elems = $doc->getElementsByTagName('title');

mood
Publicité
Posté le 27-11-2008 à 16:52:53  profilanswer
 

n°1817923
Profil sup​primé
Posté le 27-11-2008 à 17:49:07  answer
 

Tu n'a qu'à les tester avec isset() :
http://fr.php.net/isset
Et tu peux activer l'affichage des notices pour t'aider
 

Code :
  1. error_reporting(E_ALL | E_NOTICE);

n°1817954
majong
Posté le 27-11-2008 à 18:07:56  profilanswer
 

J'ai mis  

Code :
  1. error_reporting(0);


L'erreur ne s'affiche plus, mais l'execution est stopée. Comment dire de quitter la fonction en cours et de continuer le reste ?

n°1817957
Profil sup​primé
Posté le 27-11-2008 à 18:09:36  answer
 

et bien teste avec isset :

Code :
  1. <?php
  2. if(!isset($var)) {
  3.    //$var n'est pas initialise
  4. } else {
  5.    //Traitement de $var
  6. }

n°1817978
majong
Posté le 27-11-2008 à 18:26:58  profilanswer
 

J'ai essayé isset, voilà la suite:
L'erreur est sur cette ligne:

Code :
  1. $elems = $doc->getElementsByTagName('title');


Dans la page spécifié 'title' est introuvable .
Le problème c'est que des fois il y a ce mot !


Message édité par majong le 27-11-2008 à 18:27:43
n°1817981
Profil sup​primé
Posté le 27-11-2008 à 18:31:18  answer
 

...
Quelle est l'erreur exacte ?
As tu essayé avec isset ?

n°1817987
majong
Posté le 27-11-2008 à 18:43:00  profilanswer
 

oui,
voilà la valeur de $contenu:
302 Moved
The document has moved here.  
 
Voilà l'erreur affichée en dessous:
Fatal error: Call to a member function getElementsByTagName() on a non-object in mon_url on line 473


Message édité par majong le 27-11-2008 à 18:43:30
n°1817989
majong
Posté le 27-11-2008 à 18:46:25  profilanswer
 

Le code:

Code :
  1. curl_close($ch);
  2. if(isset($contenu))
  3. {
  4.   $doc = @DOMDocument::loadXML($contenu);
  5.   if(isset($doc))
  6.   {
  7.     $elems = $doc->getElementsByTagName('title');
  8.     if(isset($elems))
  9.     { ...

n°1817990
Profil sup​primé
Posté le 27-11-2008 à 18:46:32  answer
 

le problème vient de ta requête CURL, elle échoue.
Du coup impossible de lire $contenu puisqu'il est invalide :/
N'oublie pas de tester avec isset(), je me répète, mais j'ai l'impression que tu ne le fais pas :p
Si la variable n'est pas ok annule le traitement bien sur.

n°1817999
majong
Posté le 27-11-2008 à 18:55:47  profilanswer
 

On a posté presque en meme temps, tu vois qqch d'autre à mettre ?
juste avant $doc il manque echo $contenu;
Dans le fichier xml il y a bien qqch, sauf qu'il manque les balise non ?


Message édité par majong le 27-11-2008 à 18:57:29
mood
Publicité
Posté le 27-11-2008 à 18:55:47  profilanswer
 

n°1818001
omega2
Posté le 27-11-2008 à 18:56:52  profilanswer
 

Ne jamais mettre d'@ devant une fonction, c'est le mal, ça cache tous les problèmes.
Ne jamais mettre l' "error_reporting" à 0 sur un serveur de test : c'est encore plus le mal, ça cache vraiment tous les problèmes.
 
 
Pour le reste [:sh@rdar] (commence par lire la doc) c'est un bon point de départ pour savoir ce que retourne chaque fonction et donc comment tester le résultat (isset() ne sert à rien si on obtient un booléen ;) )
 
PS : Vu le texte de ton $contenu, c'est normal que ta page gueule : t'es tombé sur une page de redirection et non pas sur une page (x)html.

n°1818002
Profil sup​primé
Posté le 27-11-2008 à 18:58:23  answer
 

RTFM :
http://fr.php.net/isset
isset() vérifie l'existence d'une variable, si tu l'initialise juste avant pas besoin de tester son existence, teste juste sa validité (pour $doc, par exemple, qu'il contienne un objet DOM correct).
Ensuite, le problème vient de ta requete CURL, regarde le message d'erreur.
 
EDIT :  [:benou_grilled]


Message édité par Profil supprimé le 27-11-2008 à 19:03:25
n°1818005
majong
Posté le 27-11-2008 à 18:59:56  profilanswer
 

Oui, mais si j'oublie de mettre à jour mon lien xml, je ne veux pas qu'il tombe le site !
Je règle les autres problème ...

n°1818007
majong
Posté le 27-11-2008 à 19:05:16  profilanswer
 

J'ai supprimé le @ et viré error_reporting(0)
 

Code :
  1. Warning: DOMDocument::loadXML() [domdocument.loadxml]: Opening and ending tag mismatch: meta line 1 and HEAD in Entity, line: 2 in mon_url on line 467
  2. Warning: DOMDocument::loadXML() [domdocument.loadxml]: Opening and ending tag mismatch: HEAD line 1 and HTML in Entity, line: 6 in mon_url on line 467
  3. Warning: DOMDocument::loadXML() [domdocument.loadxml]: Premature end of data in tag HTML line 1 in Entity, line: 7 in mon_url on line 467
  4. Fatal error: Call to a member function getElementsByTagName() on a non-object in mon_url on line 470

n°1818008
majong
Posté le 27-11-2008 à 19:06:25  profilanswer
 

Comment savoir que le fichier xml est valide alors ?

n°1818010
Profil sup​primé
Posté le 27-11-2008 à 19:07:00  answer
 

et bien le fichier XML n'est pas correct
il te suffit de le corriger à partir des indications qui te sont données.


Message édité par Profil supprimé le 27-11-2008 à 19:07:27
n°1818012
omega2
Posté le 27-11-2008 à 19:11:22  profilanswer
 

Ben déjà quand t'as un fichier qui commence par un nombre, tu es sur que ça n'est pas du xml. ;)
Ca t'éliminera déjà toutes les redirections et les messages d'erreurs envoyé par un serveur web.
 
Pour savoir si c'est du xml, franchement à par le parser je ne voit pas comment on pourrait le deviner.


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

  gestion des erreurs

 

Sujets relatifs
Gestion des erreurs[C-DBUS] gestion des erreurs
rétablir la gestion des erreurs par défaut dans accessGestion d'erreurs mysql
Gestion d'erreursProbleme avec gestion des erreurs en vbscript
Comment faire une gestion avancée d'erreurs de saisiesGestion d'erreurs en VBSCRIPT
Terminer l'exécution d'une page au milieu / gestion d'erreurs [RESOLU]Gestion des erreurs dans VB
Plus de sujets relatifs à : gestion des erreurs


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR