Traquer les variables indéfinies

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Traquer les variables indéfinies

par dogmongo » 21 mai 2007, 23:02

à vraix dire non ce sont souvent les mêmes qui génèrent une ligne sur le fichier logs :wink:
À part ça euh... il ne doit pas y en avoir tant que ça de variables indéfinies, si ? Tu auras plus vite fait de les corriger à la main à mon avis.

par Sékiltoyai » 21 mai 2007, 22:21

En fait, je ne pensais pas tellement à récupérer la ligne, je me demandais juste si la ligne
 echo $test['null']; 
équivalait au simple appel de la fonction :
e_handler(0, '', __FILE__, __LINE__);
Mais à te lire, ca semble être le cas...

Au passage, merci de tes renseignements, ca me sera utile :)

par Hubert Roksor » 21 mai 2007, 22:16

L'exception est générée dans le contexte du gestionnaire d'erreur. Si tu veux accéder au fichier et à la ligne de l'erreur il te faut créer une classe qui étend la classe Exception et à laquelle tu passe d'une façon ou d'une autre le numéro de ligne, nom du fichier, etc...
<?php

function e_handler($errno, $message, $file, $line)
{
	throw(new Exception($message));
}

set_error_handler('e_handler', E_ALL | E_STRICT); 

try 
{ 
	$test = array(); 
	echo $test['null']; 
} 
catch (Exception $e) 
{ 
	echo 'Exception: ', $e->getMessage(), ' ligne ', $e->getLine(); 
}
Cet exemple dira "Exception ... ligne 5", ligne qui a lancé l'exception.

par Sékiltoyai » 21 mai 2007, 21:49

Arf, c'est relou ca...
Et le error_handler il est exécuté dans le contexte courant ? C'est à dire que si on a ce code :
<?php

function e_handler($errno, $message, $file, $line)
{
throw(new Exception());
}
set_error_handler('e_handler');

try
{

$test = array();
echo $test['null'];

}
catch(Exception e)
{
echo 'erreur';
}

?>
L'erreur sera captée par le error_handler et l'exception lancée par celui ci sera captée ?

par Hubert Roksor » 21 mai 2007, 21:31

j'ai prévu de les utiliser mais je ne sais pas trop comment php les gère...
Pas. Voilà comment il les gère... Seules certaines extensions génèrent des exceptions, mais tu peux utiliser ton propre error_handler pour transformer les erreurs en exception. (simplement en générant une exception dans ton gestionnaire d'erreur)

par Sékiltoyai » 21 mai 2007, 20:17

Les exceptions seraient pas mieux adaptées que le error_handler ? Je demande ca parce que j'ai prévu de les utiliser mais je ne sais pas trop comment php les gère...

par Hubert Roksor » 21 mai 2007, 19:16

Et encore mieux, set_error_handler() te permet de créer ta propre fonction pour gérer les erreurs (ex : variable indéfinie ? ==> tu la crées).
Hmm, et comment tu la crées dans le bon scope ? :roll:

À part ça euh... il ne doit pas y en avoir tant que ça de variables indéfinies, si ? Tu auras plus vite fait de les corriger à la main à mon avis.

par dogmongo » 21 mai 2007, 18:33

merci pour l'info je vais potasser ca :wink:

par mere-teresa » 21 mai 2007, 15:42

Regarde la gestion des erreurs dans la doc :
Error_log() te permet d'envoyer les erreurs dans un fichier ou par e-mail, etc...http://fr3.php.net/manual/fr/function.error-log.php

Et encore mieux, set_error_handler() te permet de créer ta propre fonction pour gérer les erreurs (ex : variable indéfinie ? ==> tu la crées).

par dogmongo » 21 mai 2007, 14:50

Mim tu as tout à fais raison :)

Code : Tout sélectionner

[client 0.0.0.0] PHP Notice: Undefined variable: mavariable in /var/www/vhosts/monsite.com/httpdocs/mapage.php on line 25

que veux tu dire ? je peu faire ca sur chaque site ?
recupere les fichiers d'erreurs

par thehawk » 21 mai 2007, 14:31

tu peut créer un script qui recupere les fichiers d'erreurs , puis avec une expressions regulieres choper les nom de viables puis te les mettres dans une base de données ou autres

par Mim » 20 mai 2007, 19:20

Normalement, l'erreur s'affiche comme ça :
Notice: Undefined variable: nom_de_la_variable in __FILE__ on line __LINE__
Et tu connais ainsi directement les noms des variables que tu utilises sans les avoir initialisées, et tu peux rectifier le tir... ;)

par Sékiltoyai » 20 mai 2007, 18:08

Bah c'est bizarre ta question. Sont indéfinies toutes les variables qui ne sont pas définies. Les variables indéfinies, il y en a une infinité...

Traquer les variables indéfinies

par dogmongo » 20 mai 2007, 17:07

Bonjour all,

Je souhaiterai savoir si il existe un petit scripts que je pourrai mettre dans mes pages pour connaitre les variables indéfinies, j'ai remarqué pas mal de trafic coté logs avec des error en masse "undefined variable" !
Si c'est possible ça me sera très utile pour corriger mes erreurs

Merci d'avance