IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Utiliser une fonction..


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 48
    Points : 27
    Points
    27
    Par défaut Utiliser une fonction..
    Hello à tous !

    J'ai le script de la fonction suivante ci-dessous, et je ne parviens pas à l'utiliser ..
    Bien utilisée, elle doit donner le meme résultat que sur http://www.tienhuis.nl/php-email-add...-verify-probe/
    Merci à celui qui arrivera à m'aider ..

    Excellente semaine à tous en tout cas :-)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    <? 
     
    highlight_file(__FILE__); 
     
    function validateEmail($email, $domainCheck = false, $verify = false, $return_errors=false) { 
        global $debug; 
        if($debug) {echo "<pre>";} 
        $errors = array(); 
        # Check syntax with regex 
        if (preg_match('/^([a-zA-Z0-9\._\+-]+)\@((\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,7}|[0-9]{1,3})(\]?))$/', $email, $matches)) { 
            $user = $matches[1]; 
            $domain = $matches[2]; 
            # Check availability of DNS MX records 
            if ($domainCheck && function_exists('checkdnsrr')) { 
                # Construct array of available mailservers 
                if(getmxrr($domain, $mxhosts, $mxweight)) { 
                    for($i=0;$i<count($mxhosts);$i++){ 
                        $mxs[$mxhosts[$i]] = $mxweight[$i]; 
                    } 
                    asort($mxs); 
                    $mailers = array_keys($mxs); 
                } elseif(checkdnsrr($domain, 'A')) { 
                    $mailers[0] = gethostbyname($domain); 
                } else { 
                    $mailers=array(); 
                } 
                $total = count($mailers); 
                # Query each mailserver 
                if($total > 0 && $verify) { 
                    # Check if mailers accept mail 
                    for($n=0; $n < $total; $n++) { 
                        # Check if socket can be opened 
                        if($debug) { echo "Checking server $mailers[$n]...\n";} 
                        $connect_timeout = 2; 
                        $errno = 0; 
                        $errstr = 0; 
                        $probe_address = 'postmaster@tienhuis.nl'; 
                        # Try to open up socket 
                        if($sock = @fsockopen($mailers[$n], 25, $errno , $errstr, $connect_timeout)) { 
                            $response = fgets($sock); 
                            if($debug) {echo "Opening up socket to $mailers[$n]... Succes!\n";} 
                            stream_set_timeout($sock, 5); 
                            $meta = stream_get_meta_data($sock); 
                            if($debug) { echo "$mailers[$n] replied: $response\n";} 
                            $cmds = array( 
                                "HELO outkast.tienhuis.nl",  # Be sure to set this correctly! 
                                "MAIL FROM: <$probe_address>", 
                                "RCPT TO: <$email>", 
                                "QUIT", 
                            ); 
                            # Hard error on connect -> break out 
                            if(!$meta['timed_out'] && !preg_match('/^2\d\d[ -]/', $response)) { 
                                $error = "Error: $mailers[$n] said: $response\n"; 
                                break; 
                            } 
                            foreach($cmds as $cmd) { 
                                $before = microtime(true); 
                                fputs($sock, "$cmd\r\n" ); 
                                $response = fgets($sock, 4096); 
                                $t = 1000*(microtime(true)-$before); 
                                if($debug) {echo htmlentities("$cmd\n$response" ) . "(" . sprintf('%.2f', $t) . " ms)\n";} 
                                if(!$meta['timed_out'] && preg_match('/^5\d\d[ -]/', $response)) { 
                                    $error = "Unverified address: $mailers[$n] said: $response"; 
                                    break 2; 
                                } 
                            } 
                            fclose($sock); 
                            if($debug) { echo "Succesful communication with $mailers[$n], no hard errors, assuming OK";} 
                            break; 
                        } elseif($n == $total-1) { 
                            $errors = "None of the mailservers listed for $domain could be contacted"; 
                        } 
                    } 
                } else { 
                    $error = "No usable DNS records found for domain '$domain'"; 
                } 
            } 
        } else { 
            $error = 'Address syntax not correct'; 
        } 
        if($debug) { echo "</pre>";} 
        #echo "</pre>"; 
        if($return_errors) { 
            # Give back details about the error(s). 
            # Return FALSE if there are no errors. 
            # Keep this in mind when using it like: 
            # if(checkEmail($addr)) { 
            # Because of this strange behaviour this 
            # is not default ;-) 
            if(isset($error)) return htmlentities($error); else return false; 
        } else { 
            # 'Old' behaviour, simple to understand 
            if(isset($error)) return false; else return true; 
        } 
    } 
     
     
    ?>

  2. #2
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    Bonjour et merci.

    Et bien tu appel classiquement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    validateEmail(uneadresse@email.com);
    Tu peux lui demander d'essayer de tester le domaine (si email.com existe dans ce cas là) mais il faut une fonction sur ton serveur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    validateEmail(uneadresse@email.com, TRUE);
    Tu peux essayer d'envoyer un email aussi (seulement si tu as tester le domaine)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    validateEmail(uneadresse@email.com, TRUE, TRUE);
    Et enfin, si tu veux que la fonction t'affiche les erreurs qu'elle à récuperer (uniquement lorsque tu es en phase de dev je te conseil !)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    validateEmail(uneadresse@email.com, TRUE, TRUE, TRUE);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD9] Utiliser une fonction d'un ActiveX avec pointeur
    Par archimor dans le forum WinDev
    Réponses: 3
    Dernier message: 21/03/2006, 00h41
  2. [Débutant] Déclarer, utiliser une fonction
    Par Hokagge dans le forum Langage
    Réponses: 7
    Dernier message: 14/03/2006, 08h03
  3. Réponses: 10
    Dernier message: 10/02/2006, 14h23
  4. DAO impossible d'utiliser une fonction dans un requete
    Par exter666 dans le forum VBA Access
    Réponses: 10
    Dernier message: 24/09/2005, 17h15
  5. Utiliser une fonction
    Par MaxiMax dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 12/08/2005, 07h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo