Formulaire de contacte pour votre site bis

Attention, depuis PHP 5.5.0, certaines extensions SQL sans doute utilisées dans ce tutoriel peuvent être obsolètes et seront supprimées dans le futur, vous devez donc adapter les codes! Exemples ici.
Suite au tutoriel sur : "Créer un formulaire de contact pour votre site", voici une nouvelle version avec quelques arrangements.

Ce formulaire de contacte dispose des arrangements suivant :
-Mise en forme CSS du formulaire.
-Textarea qui s'allonge automatiquement lors de la saisie.
-Captcha.
-Mise en évidence des erreurs.
-Date et heure d’envoi.

Visualisez la démo » Démonstration du formulaire de contacte.

Vous avez 3 variables à compléter (ligne 183, 184, 185 sous Notepad++) :
        $mon_email = "***";//votre email
        $mon_pseudo = "***";//votre pseudo
        $mon_url = "***";//url de votre site
Remplacez les étoiles par vos données.
<?php
//On initialise les sessions
session_start();
?>
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Language" content="fr" />
<style type="text/css">
fieldset{
width:600px;
color:#000;
}
legend{
font-weight:bold;
padding:2px 5px;
margin-left:50px;
}
fieldset, legend, input, textarea{
border:1px solid #CCC;
border-radius:5px 5px 5px 5px;
-webkit-border-radius:5px 5px 5px 5px;
-moz-border-radius:5px 5px 5px 5px;
}
label,input,textarea{
display: block;
width: 350px;
float: left;
margin-bottom: 10px;
/*border:1px solid green;*/
}
label {
text-align: right;
width: 150px;
padding-right: 20px;
/*border:1px solid red;*/
}
br {
clear: left;
}
input[type=submit],input[type=reset]{
width: 70px;
margin-left:15px;
}
.radio, input[type=checkbox],input[type=radio]{
/*border:1px solid blue;*/
width:50px;
margin: 0 -10px;
padding:0 5px;
border:none;/*pour IE*/
}
.invalide{
background-color:#FAB9AD;
}
.erreur{
color:red;
background-color:#FAB9AD;
}
.captcha{
font-weight:bold;
color:white;
background:green;
letter-spacing:2px;
margin-left:5px;
padding: 0 3px;
}
</style>
<!-- Jquery permettant d'agrandir le textarea automatiquement --> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script> <script type="text/javascript" src="http://jquery-elastic.googlecode.com/svn/trunk/jquery.elastic.source.js"></script> <script type="text/javascript"> $(document).ready(function() { //On utilise l'identifiant du textarea
  $('#son_message').elastic();
});
</script>
</head>
 
<body>
<?php
//Fonction pour convertir un timestamp en date
function convertit_timestamp_en_date($timestamp_actuel) {
    return date("j-m-Y @ H:i:s", $timestamp_actuel);
}
//On convertit le timestamp actuel en date et heure
$date = convertit_timestamp_en_date(time());
 
//Si la variable $_POST['captcha'] n'est pas vide, on la crypte
if ( !empty($_POST['captcha']) ) {
    $captchacrypte = md5($_SESSION['captcha']);
 
    //On supprime la session pour éviter la récupération pour les robots
    $_SESSION['captcha'] = '';
}
 
//Tableau
$caracteres = array("a", "b", "c", "d", "e", "f","g", "h", "i", "j", "k", "l","m","n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x","y","z", 0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
//On sort 6 caractères aléatoirement
$caracteres_aleatoires = array_rand($caracteres, 6);
//On initialise la variable
$pass = "";
//On boucle
foreach($caracteres_aleatoires as $i)
{
    $pass .= $caracteres[$i];
}
//On génère la session
$_SESSION['captcha'] = $pass;
 
//On initialise le formulaire pour le masquer quand le formulaire sera posté. Il sear donc caché à l'état 1
$masquer_formulaire = 0;
 
//Si le formulaire a été soumis
if (isset($_POST["envoyer"])){
 
    //On récupère les champs du formulaire et on arrange leur mise en forme
    //trim()  enlève les espaces en début et fin de chaine
    //stripslashes()  retire les backslashes ==> \' devient '
    if (isset($_POST["civilite"])) $_POST["civilite"]=$_POST["civilite"];
    if (isset($_POST["son_pseudo"])) $_POST["son_pseudo"]=trim(stripslashes($_POST["son_pseudo"]));
    if (isset($_POST["son_email"])) $_POST["son_email"]=trim(stripslashes($_POST["son_email"]));
    if (isset($_POST["son_url"])) $_POST["son_url"]=trim(stripslashes($_POST["son_url"]));
    if (isset($_POST["son_objet"])) $_POST["son_objet"]=trim(stripslashes($_POST["son_objet"]));
    if (isset($_POST["son_message"])) $_POST["son_message"]=trim(stripslashes($_POST["son_message"]));
 
    /*Après la mise en forme, on vérifie la validité des champs*/
 
    //L'utilisateur n'a pas saisi sa civilité
    if (empty($_POST["civilite"])) {
        //On met dans la variable $erreur0 le message qui sera affiché
        $erreur0="<div class=\"erreur\">Vous n'avez pas saisi votre civilité...</div>";
        //On attribue une class CSS en cas d'erreur pour que l'internaute situe l'erreur
        $class0="invalide";
    }
    //L'utilisateur n'a pas rempli le champ pseudo
    elseif (empty($_POST["son_pseudo"])) {
        $erreur1="<div class=\"erreur\">Vous n'avez pas entré votre pseudo...</div>";
        $class1="invalide";
    }
    //L'utilisateur n'a pas rempli le champ email
    elseif (empty($_POST["son_email"])) {
        $erreur2="<div class=\"erreur\">Nous avons besoin de votre e-mail pour vous répondre...</div>";
        $class2="invalide";
    }
    //On vérifie si l'email est bien de la forme messagerie@domaine.tld
    elseif (!preg_match("$[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["son_email"])){
        $erreur3="<div class=\"erreur\">Votre adresse e-mail n'est pas valide...</div>";
        $class2="invalide";
    }
    //L'utilisateur n'a pas rempli le champ objet
    elseif (empty($_POST["son_objet"])) {
        $erreur4="<div class=\"erreur\">Vous devez entrer l'objet de votre message...</div>";
        $class3="invalide";
    }
    //L'utilsateur n'a écrit aucun message
    elseif (empty($_POST["son_message"])) { 
        $erreur5="<div class=\"erreur\">Merci de saisir un message...</div>";
        $class4="invalide";
    }
    //L'utilisateur na pas saisie le captcha
    else if(empty($_POST['captcha'])) {
        $erreurcapchavide = "<div class=\"erreur\">Le code de sécurité est vide.</div>";
        $class5="invalide";
    }
    //L'utilisateur a mal saisie le captcha
    else if($captchacrypte != md5($_POST['captcha'])) {
        $erreurcapcha = "<div class=\"erreur\">Le code de sécurité est faux.</div>";
        $class5="invalide";
    }
    //Tout est ok
    else
    {   
        //On stocke les variables récupérées du formulaire
        $civilite = $_POST["civilite"];
        $son_pseudo = $_POST["son_pseudo"];
        $son_email = $_POST["son_email"];
        $son_url = $_POST["son_url"];
        $son_objet = $_POST["son_objet"];
        $son_message = $_POST["son_message"];
 
        //Variable à compléter
        $mon_email = "***";//votre email
        $mon_pseudo = "***";//votre pseudo
        $mon_url = "***";//url de votre site
 
        //Mise en forme du message que vous recevrez
        $msg_pour_moi = "- Son pseudo : $civilite $son_pseudo \n     - Son E-mail : $son_email \n     - Son site : $son_url \n     - Objet du message : $son_objet \n     - Message : \n $son_message \n     - Date et heure : $date \n\n";
 
        //Mise en forme de l'accusé réception qu'il recevra
        $accuse_pour_lui = "Bonjour $civilite $son_pseudo,\n     Votre message nous a bien été envoyé et nous tâcherons de vous répondre le plus rapidement possible.\n\n     - Votre E-mail : $son_email \n     - Votre site : $son_url \n     - L'objet de votre message : $son_objet \n     - Votre message : \n $son_message \n\n     Merci et à bientôt sur $mon_url !";
 
        //Envoie du mail
        //On prépare l'entête du message
        $entete = "From: " . $mon_pseudo . " <" . $mon_email . ">\n";
        $entete .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
        $entete .='Content-Transfer-Encoding: 8bit';
        //Si le mail a été envoyé
        if (@mail($mon_email,$son_objet,$msg_pour_moi,$entete) && @mail($son_email,$son_objet,$accuse_pour_lui,$entete)){
 
            //On affiche un message de confirmation
            echo "<p style=\"text-align:center\">Votre message a été envoyé, vous recevrez une confirmation par mail.<br /><br />\n";
            //Avec un lien de retour vers l'accueil du site
            echo "<a href=\"" . $mon_url . "\">Retour</a></p>\n";
        }
        //Sinon il y a eu une erreur lors de l'envoi
        else {
            echo "<p style=\"text-align:center\">Un problème s'est produit lors de l'envoi du message.\n";
            //On propose un lien de retour vers le formulaire
            echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez...</a></p>\n";
        }
 
        //On masque le formulaire
        $masquer_formulaire=1;
    }
}
//Si l'état du formulaire est égal à zéro, on l'affiche
if($masquer_formulaire == 0) {
    ?>
 
    <!-- Formulaire HTML -->
    <fieldset>
    <legend>Votre message</legend>
    <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
 
    <!-- Intitulé du champ civilité -->
 
    <label for="civilite" <?php if(isset($class0)) echo 'class="'.$class0.'"';?>>Civilité :</label>
    <?php if(isset($erreur0)) echo $erreur0;?>
    <label for="Monsieur" class="radio">Mr :</label><input type="radio" name="civilite" value="Monsieur" id="Monsieur" <?php if(isset($_POST["civilite"]) && $_POST["civilite"]=="Monsieur")
    //Une case a été coché --> la ré afficher
    echo 'checked="checked"';?> />
    <label for="Mademoiselle" class="radio">Mlle :</label><input type="radio" name="civilite" value="Mademoiselle" id="Mademoiselle" <?php if(isset($_POST["civilite"]) && $_POST["civilite"]=="Mademoiselle") echo 'checked="checked"';?> />
    <label for="Madame" class="radio">Mme :</label><input type="radio" name="civilite" value="Madame" id="Madame" <?php if(isset($_POST["civilite"]) && $_POST["civilite"]=="Madame") echo 'checked="checked"'?> />
    <br/>
 
    <!-- Intitulé du champ pseudo -->
    <label for="son_pseudo" <?php if(isset($class1)) echo 'class="'.$class1.'"';?>>Pseudo *:</label>
    <?php if(isset($erreur1)) echo $erreur1;?>
    <input type="text" size="40" name="son_pseudo" id="son_pseudo" value="<?php         if (!empty($_POST["son_pseudo"])) {         // le pseudo de l'expéditeur a été saisi --> le ré afficher         // htmlspecialchars() convertit les caractères spéciaux en leurs code html, exemple : & devient &amp;         echo htmlspecialchars($_POST["son_pseudo"],ENT_QUOTES);         }         ?>" />
    <br />
 
       <!-- Intitulé du champ e-mail -->
    <label for="son_email" <?php if(isset($class2)) echo 'class="'.$class2.'"';?>>E-mail *:</label>
    <?php if(isset($erreur2)) echo $erreur2;?><?php if(isset($erreur3)) echo $erreur3;?>
    <input type="text" size="40" name="son_email" id="son_email" value="<?php         if (!empty($_POST["son_email"])) {         // l'e-mail de l'expéditeur a été saisi --> le ré afficher         echo htmlspecialchars($_POST["son_email"],ENT_QUOTES);         }         ?>" />
    <br />
 
    <!-- Intitulé du champ url (facultatif) -->
    <label for="son_url">URL de votre site :</label>
    <input type="text" size="40" name="son_url" id="son_url" value="<?php         if (!empty($_POST["son_url"])) {         // l'url a été saisi --> la ré afficher         echo htmlspecialchars($_POST["son_url"],ENT_QUOTES);         }         ?>" />
    <br />
 
    <!-- Intitulé du champ objet -->
    <label for="son_objet" <?php if(isset($class3)) echo 'class="'.$class3.'"';?>>Objet *:</label>
    <?php if(isset($erreur4)) echo $erreur4;?>
    <input type="text" size="40" name="son_objet" id="son_objet" value="<?php         if (!empty($_POST["son_objet"])) {         // l'objet du message a été saisi --> le ré afficher         echo htmlspecialchars($_POST["son_objet"],ENT_QUOTES);         }         ?>" />
    <br />
 
    <!-- Intitulé du champ message -->
    <label for="son_message"<?php if(isset($class4)) echo 'class="'.$class4.'"';?> >Message *:</label>
    <?php if(isset($erreur5)) echo $erreur5;?>
    <textarea name="son_message" id="son_message" cols="60" rows="15"><?php
    if (isset($_POST["son_message"])) {
        // le message a été saisi --> le ré afficher
        echo htmlspecialchars($_POST["son_message"],ENT_QUOTES);
    }
    ?>
</textarea>
    <br />
 
    <!-- Intitulé du captcha -->
    <label for="captcha" <?php if(isset($class5)) echo 'class="'.$class5.'"';?>>Captcha *: <?php echo '<span class="captcha">'.$pass.'</span>';?></label>
    <?php if(isset($erreurcapchavide)) echo $erreurcapchavide;?><?php if(isset($erreurcapcha)) echo $erreurcapcha;?>
    <input name="captcha" size="67" maxlength="6" type="text" value="<?php if (!empty($_POST["captcha"])) { echo htmlspecialchars($_POST["captcha"],ENT_QUOTES); } ?>"/>
    <br/>
 
    <!-- Intitulé de validation -->
    <label for="go">Action »</label>
    <input type="submit" name="envoyer" value="Envoyer" /><input type="reset" name="reset" value="Effacer" />
 
    </form>
    </fieldset>
    <!-- FIN du formulaire HTML -->
 
    <?php
    //On ferme $masquer_formulaire == 0
}
?>
</body>
</html>
Vous pouvez télécharger le code du formulaire de contacte par l'intermédiaire de ce lien » Téléchargement du formulaire de contacte (format rar).  
Voir/déposer un commentaire (5) | Signaler un problème