Posté : 03-02-2005 22:58
bonjour bonjour,
ce nest pas tres utile, mais on ne sait jamais, ca peut sdervir a kk1...
alors voici une petite variante pour faire plus propre...(enfin jespere)
sauf erreur de ma part, ca devrait fonctionner pas trop mal..
<?
//fichier lib/erreur.class.php
class Erreur
{
var $tab; //stocke les messages
//constructeur de classe (il n'y a pas de destructeur en php)
function Erreur()
{
$this->$tab = array();
//??a koi servent ces 2 variables??
global $conf_edito; $conf_edito = 0;
global $error; $error = 1;
}
function email($type_erreur, $autre)
{
//kkes modifs:
//il est preferable dans un switch de gerer la sortie par des break.
//ca permet de faire d'autres action si necessaire (netoyage par exemple)
//ca permet aussi de faire renvoyer un code a la fonction.
//il est preferable de faire retourner un code a toute fonction (surtout dans une classe)
switch ($type_erreur)
{
case& nbsp;"espace":
  ; $this->$tab[] = $this->tableau("L'email ne doit pas contenir d'espace< /font>", FALSE);
  ; break;
case& nbsp;"court":
  ; $this->$tab[] = $this->tableau("Adresse email trop courte", FALSE);
  ; break;
case& nbsp;"long":
  ; $this->$tab[] = $this->tableau("Adresse email trop longue", FALSE);
  ; break;
case& nbsp;"arobase":
  ; $this->$tab[] = $this->tableau("L'adresse email n'a pas d'arobase (@)< /font>", FALSE);
  ; break;
case& nbsp;"interdit":
  ; $this->$tab[] = $this->tableau("Caractère(s) interdit dans l'email ($autre) ", FALSE);
  ; break;
case& nbsp;"incorrect":
  ; $this->$tab[] = $this->tableau("Adresse email incorrect", FALSE);
  ; break;
case& nbsp;"incorrect_domaine":
  ; $this->$tab[] = $this->tableau("Ce domaine ($autre) n'accepte pas les& nbsp;emails", FALSE);
  ; break;
//tou jours utile de gerer les cas imprevus
defau lt:
  ; $this->$tab[] = $this->tableau("Erreur inconnue", FALSE);
  ; return(FALSE);
}
return(TRUE);
}
// Tableau pour la gestion d 'erreur
function tableau($message, $sql=false)
{
$mes .= "<br /><br /><font color=\"#FF0000\">$message</font>";
if ($sql) {
$mes& nbsp;.= "<br /><br />.: ".mysql_error()." :.";
//&nb sp;si c'est une erreur mysql, on n'attend pa s la suite
$this ->affiche_tableau() ;
exit( 0);
}
return $mes;
}
// affichage du Tableau pour  ;la gestion d'erreur
function affiche_tableau()
{
//on verifie qu'on& nbsp;a des erreurs avant d'afficher & quitter
//on peut supprimer le $this devant $tab en cas de comport ement etrange sur le comptage du nombre d'el ements.
if ($count($this< font color="#007700">->$tab)>0)
{
!incl ude!("header.php");
echo& nbsp;"<center><img src=\"images/stop.gif\" />";
forea ch($this->$tab as $elt) { echo $elt; }
echo& nbsp;"<br /><br /><a href=\"!javascript!:history.back()\">Retour</a>";
echo& nbsp;"</center>";
!incl ude!("footer.php");
exit( 1);
}
return(TRUE)
}
}
?>
et la ptite fonction qui va bien.....
<?
// Vérifie la validité d'un email
function verifie_email($email){
//formulaire de contact => on peut envisager un chargement ponctuel de la classe
//=> a eviter pour des travaux plus frequent/lourd.
if (!class_exists('Erreur')) {
!include!('lib/erreur.class.php');
}
//static //creation de lelement une seule fois lors du premier chargement de verifie_email
  ; //on aurait pu metre un static, mais pour quoi faire?
$erreur = new Erreur();
if (strrpos($email,' ') > 0) { $erreur->email("espace", ""); }
if (strlen($email) < 6) { $erreur->email("court", ""); }
if (strlen($email) > 255) { $erreur->email("long", ""); }
if (!ereg("@", $email)) { $erreur->email("arobase", ""); }
if (preg_match_all("/([^a-zA-Z0-9_\@\.\-])/i", $email, $trouve))
{
$erreur->email("interdit", implode(", ", $trouve[0]));
}
if (!preg_match("/^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}\$/i", $email))
{
$erreur->email("incorrect", "");
}
list($compte, $domaine)=split("@", $email, 2);
if (!checkdnsrr($domaine, "MX"))
{
$erreur->email("incorrect_ domaine", "$domaine");
}
//on peut afficher les erreurs,
//s'il y en a, la fonction termine le script par un exit.
$erreur->affiche_tableau();
//sinon on renvoie true
return(TRUE);
}
?>
|