website logo
Auteur
avatar
hexagone

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


Posté : 3 févr. 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 
"espace":
                $this
->$tab[] = $this->tableau("L'email ne doit pas contenir d'espace", FALSE);
                break;
            
            case 
"court":
                $this
->$tab[] = $this->tableau("Adresse email trop courte", FALSE);
                break;
            
            case 
"long":
                $this
->$tab[] = $this->tableau("Adresse email trop longue", FALSE);
                break;
            
            case 
"arobase":
                $this
->$tab[] = $this->tableau("L'adresse email n'a pas d'arobase (@)", FALSE);
                break;
            
            case 
"interdit":
                $this
->$tab[] = $this->tableau("Caractère(s) interdit dans l'email ($autre)", FALSE);
                break;
            
            case 
"incorrect":
                $this
->$tab[] = $this->tableau("Adresse email incorrect", FALSE);
                break;
            
            case 
"incorrect_domaine":
                $this
->$tab[] = $this->tableau("Ce domaine ($autre) n'accepte pas les emails", FALSE);
                break;

            //toujours utile de gerer les cas imprevus
            default:
                $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 .= 
"<br /><br />.: ".mysql_error()." :.";
            // si c'est une erreur mysql, on n'attend pas la suite
            $this
->affiche_tableau() ;
            exit(0);
            
        
}

        return $mes;

    
}
    
    // affichage du Tableau pour la gestion d'erreur 
    function affiche_tableau()
    
{
        //on verifie qu'on a des erreurs avant d'afficher & quitter
        //on peut supprimer le $this devant $tab en cas de comportement etrange sur le comptage du nombre d'elements.
        if ($count($this
->$tab)>0)
        
{
            !include!(
"header.php");

            echo 
"<center><img src=\"images/stop.gif\" />";
            foreach($this
->$tab as $elt) { echo $elt; }
            echo 
"<br /><br /><a href=\"!javascript!:history.back()\">Retour</a>";
            echo 
"</center>";

            !include!(
"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
https://www.npds.org/viewtopic.php?topic=15333&forum=5