website logo
Auteur
avatar
hexagone

Forum » » Le coin des codeurs » » [Résolu] - Prob de class, help me


Posté : 03-02-2005 22:58 icone du post

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= ont color="#007700">\"
#FF0000\">$message</font>";
        if ($sql) 
ont color="#007700">{
 
            $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);
}
?>





Cet article provient de NPDS REvolution 16
https://lab.grottes-et-karsts-de-chine.org/viewtopic.php?topic=15333&forum=5