Tester la validité d'une adresse mail avant l'envoi d'un formulaire
Hors ligneVerso Le 11/02/2011 à 12:23 Profil de Verso Configuration de Verso

Bonjour !!! smiley

 

C'est encore moi ! (si, si !)

 

Bon maintenant que je sais et peux tester les envoi de formulaire directement sur mon adresse mail, j'ai retravaillé mon formulaire et mon fichier PHP

pour la récup des infos dans une vérsion plus simple et compréhensible pour moi.)

 

Voici mon nouveau code PHP (send-email.PHP):

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Page d'envoi du formulaire de demande de renseignements (send-email)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="imagetoolbar" content="no" />
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
<link rel="stylesheet" title="Design_Recto-Verso" type="text/css" href="Recto-Verso.css" />
<!--[if lte IE 7]>
<script type="text/javascript" src="menu.js"></script>
<![endif]-->
</head>
<body>
<?php include("haut+menu.php"); ?>
<p>
  <!-- Début corps de la page-->
<?php
    /*
        ********************************************************************************************
        CONFIGURATION du fichier
        ********************************************************************************************
    */
    // destinataire : NOUS !
    $destinataire = 'anhuta@wanadoo.fr';

    // Messages de confirmation du mail
    $message_envoye = "<h1>MERCI ! </h1>
                    <p>&nbsp;</p>
                    <h2>Votre formulaire a bien &eacute;t&eacute; envoy&eacute; ! </h2>
                    <p>&nbsp;</p>
                      <h3>Vous aurez tr&egrave;s prochainement des nouvelles des clowns f&eacute;minins         Recto-Verso </h3>";
    $message_non_envoye = "Désolées l'envoi du mail a échoué, veuillez réessayer SVP.";

    // Messages d'erreur du formulaire
    $message_erreur_formulaire = "Merci <a href=\"contact.html\">d'envoyer le formulaire</a>.";
    $msg_formulaire_invalide = "Merci de vérifier que tous les champs sont bien remplis et que l'email est sans erreur.";

    /*
        ********************************************************************************************
        FIN DE LA CONFIGURATION
        ********************************************************************************************
    */

    // on teste si le formulaire a été soumis
    if (!isset($_POST['submit']))
    {
        // formulaire non envoyé
        echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
    }
    else
    {
        /* cette fonction sert à nettoyer et enregistrer un texte */
        function Rec($text)
        {
            $text = trim($text); // delete white spaces after & before text
            if (1 === get_magic_quotes_gpc())
            {
                $stripslashes = create_function('$txt', 'return stripslashes($txt);');
            }
            else
            {
                $stripslashes = create_function('$txt', 'return $txt;');
            }

            // magic quotes ?
            $text = $stripslashes($text);
            $text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
            $text = nl2br($text);
            return $text;
        };
        
        // On va vérifier les variables et l'email ...
        if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['email']))
        {
        /* envoi de l'e-mail */
        }
        else
        {
        echo 'L\'adresse ' . $_POST['email'] . ' n\'est pas valide, recommencez !';
        }


        // formulaire envoyé, on récupère tous les champs.
        $organisation   = (isset($_POST['organisation']))   ? Rec($_POST['organisation'])   : '';
        $civilite        = (isset($_POST['civilite']))       ? Rec($_POST['civilite'])       : '';
        $nom             = (isset($_POST['nom']))             ? Rec($_POST['nom'])             : '';
        $email           = (isset($_POST['email']))           ? Rec($_POST['email'])           : '';
        $tel               = (isset($_POST['tel']))               ? Rec($_POST['tel'])               : '';
        $horaires       = (isset($_POST['horaires']))       ? Rec($_POST['horaires'])       : '';
        $adresse           = (isset($_POST['adresse']))           ? Rec($_POST['adresse'])           : '';
        $CP              = (isset($_POST['CP']))               ? Rec($_POST['CP'])               : '';
        $ville          = (isset($_POST['ville']))           ? Rec($_POST['ville'])           : '';
        $option          = (isset($_POST['option']))           ? Rec($_POST['option'])           : '';
        $precision       = (isset($_POST['precision']))       ? Rec($_POST['precision'])       : '';
        $lieu             = (isset($_POST['lieu']))             ? Rec($_POST['lieu'])             : '';

        if (($organisation != '') && ($civilite != '') && ($nom != '') && ($email != '') && ($tel != '') && ($horaires != '') && ($adresse != '') && ($CP != '') && ($ville != '') && ($option != '') && ($precision != '') && ($lieu != ''))
        {
// toutes les variables sont remplies, on génère puis envoie le mail
            
        /* Objet du mail  */
          $objet = 'demande renseignements';
        
        /* Contenu du message */
        $msg  = 'Bonjour,'."\r\n\r\n";
        $msg .= 'cette demande de renseignements nous arrive depuis clowns-rectoverso.com par '.            $civilite.' '.$nom."\r\n\r\n";
        $msg .= 'Pour une demande de renseignements  pour :'."\r\n\r\n";
        $msg .= $civilite." ";
        $msg .= $nom."\r\n\r\n";
        $msg .= $email."\r\n\r\n";
        $msg .= $organisation."\r\n\r\n";
        $msg .= $tel." aux ";
        $msg .= $horaires."\r\n\r\n";
        $msg .= $adresse."\r\n";
        $msg .= $CP."  ";
        $msg .= $ville."\r\n\r\n";
        $msg .= $option."\r\n\r\n";
        $msg .= $lieu."\r\n\r\n";
        $msg .= $precision."\r\n";
        
         /* En-têtes de l'e-mail */
        $headers = 'From: '.$nom.' <'.$email.'>' . "\r\n";

            // Envoi du mail
            if (mail( $destinataire, $objet, $msg, $headers))
                {
                echo '<p>'.$message_envoye.'</p>'."\n";
            }
            else
            {
                echo '<p>'.$message_non_envoye.'</p>'."\n";
            };
        }
        else
        {
            // une des variables (ou plus) est vide ...
            echo '<p>'.$msg_formulaire_invalide.' <a href="contact.html">Retour au formulaire</a></p>'."\n";
        };
    }; // fin du if (!isset($_POST['envoi']))
?>

  <!-- Fin corps de la page-->
<?php include("Bas.php"); ?>
</body>
</html>

 

J'ai bien trouvé la formule en en "expression régulière" pour contrôler si l'adresse e-mail rentrée

par le visiteur dans le formulaire est valide (en orange dans mon code PHP)

par contre le formulaire est malgré tout envoyé sur mon e-mail tout en signalant bien l'erreur au visiteur

on le voit bien sur le screen :

Comment modifier le code pour que le visiteur modifie son adresse e-mail avant envoi effectif du formulaire ?

 

MERCI à vous ,

 

Verso

 

 

Hors ligneAnthony Le 11/02/2011 à 20:45 Profil de Anthony Configuration de Anthony

Admin

Salut Verso,

Voici la fonction que j'utilise et qui devrait te convenir 

/**
* Retourne TRUE si le mail a un format valide
*/

function mail_valide($email)
{
     if(preg_match('/^[-a-z0-9!#$%&\'*+\/=?^_`{|}~]+(\.[-a-z0-9!#$%&\'*+\/=?^_`{|}~]+)*@(([a-z0-9]([-a-z0-9]*[a-z0-9]+)?){1,63}\.)+([a-z0-9]([-a-z0-9]*[a-z0-9]+)?){2,63}$/i', $email))
     {
          return TRUE;
     }
     return FALSE;
}

a + smiley

--

Hors ligneVerso Le 12/02/2011 à 10:38 Profil de Verso Configuration de Verso

smiley Bonjour Anthony,

 

Merci pour la fonction, mais le formulaire est tout de même envoyé, même si une erreur dans l'adresse mail est détectée.

Je voudrais que le formulaire ne parte pas tant que l'email n'est pas valide.

N'y-a-t'il pas une fontionc du genre : "si  $_POST['email']  n'est pas valide ne pas envoyer le formulaire

 

PS  :

ARF ! j'ai trouvé !!! voici le code qui fonctionne :

/* Cette fonction sert à vérifier la syntaxe d'un email */
        function IsEmail($email)
        {
            $pattern = "/^[-a-z0-9!#$%&\'*+\/=?^_`{|}~]+(\.[-a-z0-9!#$%&\'*+\/=?^_`{|}~]+)*@(([a-z0-9]([-a-z0-9]*[a-z0-9]+)?){1,63}\.)+([a-z0-9]([-a-z0-9]*[a-z0-9]+)?){2,63}$/i";
            return (preg_match($pattern,$email)) ? true : false;
        };


// formulaire envoyé, on récupère tous les champs.
        $organisation   = (isset($_POST['organisation']))   ? Rec($_POST['organisation'])   : '';
        $civilite        = (isset($_POST['civilite']))       ? Rec($_POST['civilite'])       : '';
        $nom             = (isset($_POST['nom']))             ? Rec($_POST['nom'])             : '';
        $email           = (isset($_POST['email']))           ? Rec($_POST['email'])           : '';
        $tel               = (isset($_POST['tel']))               ? Rec($_POST['tel'])               : '';
        $horaires       = (isset($_POST['horaires']))       ? Rec($_POST['horaires'])       : '';
        $adresse           = (isset($_POST['adresse']))           ? Rec($_POST['adresse'])           : '';
        $CP              = (isset($_POST['CP']))               ? Rec($_POST['CP'])               : '';
        $ville          = (isset($_POST['ville']))           ? Rec($_POST['ville'])           : '';
        $option          = (isset($_POST['option']))           ? Rec($_POST['option'])           : '';
        $precision       = (isset($_POST['precision']))       ? Rec($_POST['precision'])       : '';
        $lieu             = (isset($_POST['lieu']))             ? Rec($_POST['lieu'])             : '';

        // On va vérifier les variables et l'email ...
        $email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré

 

 

MERCI à vous et sans doute à bientôt  yesheart

 

Verso

 

Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels