Formulaire de contact multichamps

Contenu du snippet

Un formulaire de contact assez complet avec envoi d'un accusé.

Utile pour un petit site professionnel ou associatif.

En démo ici: http://viki53.free.fr/contact.php

/!\ Ce script sert pour mon site, évitez de l'utiliser abusivement pour ne pas pourrir ma BAL.

Source / Exemple :


<?php
if (isset($_POST["envoyer"])){ // Si le formulaire a été soumis
    $etat = "erreur"; // On initialise notre etat à erreur, il sera changé à "ok" si la vérification du formulaire est un succès, sinon il reste à erreur

    // On récupère les champs du formulaire, et on arrange leur mise en forme
	
	if (isset($_POST["titre"])) $_POST["titre"]=trim(stripslashes($_POST["titre"]));
	
    if (isset($_POST["nom"])) $_POST["nom"]=trim(stripslashes($_POST["nom"]));
	
	if (isset($_POST["prenom"])) $_POST["prenom"]=trim(stripslashes($_POST["prenom"]));

    if (isset($_POST["email"])) $_POST["email"]=trim(stripslashes($_POST["email"]));

    if (isset($_POST["url"])) $_POST["url"]=trim(stripslashes($_POST["url"]));
	
	if (isset($_POST["pays"])) $_POST["pays"]=trim(stripslashes($_POST["pays"]));
	
	if (isset($_POST["adresse"])) $_POST["adresse"]=trim(stripslashes($_POST["adresse"]));
	
	if (isset($_POST["code_postal"])) $_POST["code_postal"]=trim(stripslashes($_POST["code_postal"]));
	
	if (isset($_POST["ville"])) $_POST["ville"]=trim(stripslashes($_POST["ville"]));
	
	if (isset($_POST["telephone"])) $_POST["telephone"]=trim(stripslashes($_POST["telephone"]));

    if (isset($_POST["objet"])) $_POST["objet"]=trim(stripslashes($_POST["objet"]));
	
	if (isset($_POST["priorite"])) $_POST["priorite"]=trim(stripslashes($_POST["priorite"]));

    if (isset($_POST["message"])) $_POST["message"]=trim(stripslashes($_POST["message"]));

    // Après la mise en forme, on vérifie la validité des champs
    if (empty($_POST["nom"])) { // L'utilisateur n'a pas rempli le champ pseudo
        $erreur="Vous n'avez pas entré votre nom..."; // On met dans erreur le message qui sera affiché
        }
        elseif (empty($_POST["email"])) { // L'utilisateur n'a pas rempli le champ email
            $erreur="Nous avons besoin de votre e-mail pour vous répondre...";
        }
        elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["email"])){ // On vérifie si l'email est bien de la forme messagerie@domaine.tld (cf cours d'expressions régulières)
            $erreur="Votre adresse e-mail n'est pas valide...";
        }
        elseif (empty($_POST["objet"])) { // L'utilisateur n'a pas rempli le champ objet
            $erreur="Vous devez entrer l'objet de votre message...";
        }
        elseif (empty($_POST["message"])) { // L'utilsateur n'a écrit aucun message
            $erreur="Merci de saisir un message...";
        }
        else { // Si tous les champs sont valides, on change l'état à ok
            $etat="ok";
        }
}
else { // Sinon le formulaire n'a pas été soumis
    $etat="attente"; // On passe donc dans l'état attente
}

if ($etat!="ok"){ // Le formulaire a été soumis mais il y a des erreurs (etat=erreur) OU le formulaire n'a pas été soumis (etat=attente)
    if ($etat=="erreur"){ // Cas où le formulaire a été soumis mais il y a des erreurs
        echo "<span style=\"color:red\">".$erreur."</span><br /><br />\n"; // On affiche le message correspondant à l'erreur
    }
?>
          <div class="contactform">
            <form method="post">
              <fieldset><legend>&nbsp;Vos détails&nbsp;</legend>
                <p><label for="contact_title" class="left">Votre titre :</label>
                   <select name="titre" id="contact_title" class="combo">
                     <option value="M." selected="selected">M.</option>
                     <option value="Mme">Mme</option>
                     <option value="Mlle">Mlle</option></select></p>
					 
                <p><label for="contact_firstname" class="left">Nom* :</label>
                   <input type="text" name="nom" id="contact_firstname" class="field" value="<?php
        if (!empty($_POST["nom"])) {
        echo htmlspecialchars($_POST["nom"],ENT_QUOTES);
        }
        ?>" /></p>
				   
                <p><label for="contact_familyname" class="left">Prénom :</label>
                   <input type="text" name="prenom" id="contact_familyname" class="field" value="<?php
        if (!empty($_POST["prenom"])) {
        echo htmlspecialchars($_POST["prenom"],ENT_QUOTES);
        }
        ?>" /></p>
				   
                <p><label for="contact_street" class="left">Adresse :</label>
                   <input type="text" name="adresse" id="contact_street" class="field" value="<?php
        if (!empty($_POST["adresse"])) {
        echo htmlspecialchars($_POST["adresse"],ENT_QUOTES);
        }
        ?>" /></p>
				   
                <p><label for="contact_postalcode" class="left">Code postal :</label>
                   <input type="text" name="code_postal" id="contact_postalcode" class="field" value="<?php
        if (!empty($_POST["code_postal"])) {
        echo htmlspecialchars($_POST["code_postal"],ENT_QUOTES);
        }
        ?>" /></p>
				   
                <p><label for="contact_city" class="left">Ville :</label>
                   <input type="text" name="ville" id="contact_city" class="field" value="<?php
        if (!empty($_POST["ville"])) {
        echo htmlspecialchars($_POST["ville"],ENT_QUOTES);
        }
        ?>" /></p>
				   
                <p><label for="contact_country" class="left">Pays:</label>
                   <select name="pays" id="contact_country" class="combo">
                     <option value="N/A">Sélection...</option>
                     <option value="France">France</option>
                     <option value="Canada">Canada</option>
                     <option value="Etats-Unis">États-Unis</option>
				   </select></p>
					 
                <p><label for="contact_phone" class="left">Téléphone :</label>
                   <input type="text" name="telephone" id="contact_phone" class="field" value="<?php
        if (!empty($_POST["telephone"])) {
        echo htmlspecialchars($_POST["telephone"],ENT_QUOTES);
        }
        ?>" /></p>
				   
                <p><label for="contact_email" class="left">E-mail* :</label>
                   <input type="text" name="email" id="contact_email" class="field" value="<?php
        if (!empty($_POST["email"])) {
        echo htmlspecialchars($_POST["email"],ENT_QUOTES);
        }
        ?>" /></p>
				   
                <p><label for="contact_url" class="left">Site Web :</label>
                   <input type="text" name="url" id="contact_url" class="field" value="<?php
        if (!empty($_POST["url"])) {
        echo htmlspecialchars($_POST["url"],ENT_QUOTES);
        }
        ?>" /></p>
				   
              </fieldset>
				
				
              <fieldset><legend>&nbsp;Détails du message&nbsp;</legend>
                <p><label for="contact_subject" class="left">Sujet* :</label>
                   <input type="text" name="objet" id="contact_subject" class="field" value="<?php
        if (!empty($_POST["objet"])) {
        echo htmlspecialchars($_POST["objet"],ENT_QUOTES);
        }
        ?>" /></p>
				   
                <p><label for="contact_urgency" class="left">Priorité :</label>
                   <select name="priorite" id="contact_urgency" class="combo">
                     <option value="Très basse">Très basse</option>
                     <option value="Basse">Basse</option>
                     <option value="Normale" selected="selected">Normale</option>
                     <option value="Haute">Haute</option>
                     <option value="Très Haute">Très haute</option></select></p>
					 
                <p><label for="contact_message" class="left">Message* :</label>
                   <textarea name="message" id="contact_message" cols="45" rows="10"><?php
        if (!empty($_POST["message"])) {
        echo htmlspecialchars($_POST["message"],ENT_QUOTES);
        }
        ?></textarea></p>
				   <p>Formulaire fourni par viki53 (http://viki53.free.fr/)</p>
                <p><input type="submit" name="envoyer" class="button" value="Envoyer" /></p>
              </fieldset>
            </form>
          </div>
<?php
}
else { // Sinon l'état est ok donc on envoie le mail
	$titre = $_POST["titre"];
    $nom = $_POST["nom"]; // On stocke les variables récupérées du formulaire
    $email = $_POST["email"];
    $url = $_POST["url"];
    $objet = $_POST["objet"];
    $message = $_POST["message"];
	$adresse = $_POST["adresse"];
	$code_postal = $_POST["code_postal"];
	$ville = $_POST["ville"];
	$pays = $_POST["pays"];
	$telephone = $_POST["telephone"];
	$priorite = $_POST["priorite"];
// ================= Les 3 lignes suivantes sont à modifier ====================================
    $mon_email = "user@site.com"; // Mise en forme du message que vous recevrez
    $mon_pseudo = ".:mwa:.";
    $mon_url = "http://viki53.free.fr/";
    $msg_pour_moi = "
Par $titre $nom $prenom
- E-mail : $email
- URL : $url
- Objet du message : $objet
- Message :
$message

- Autres:
Adresse: $adresse
$code_postal
$ville
$pays
Tel: $telephone";

    // Mise en forme de l'accusé réception qu'il recevra
    $accuse_pour_lui = "
Bonjour $titre $nom nous tâcherons de vous répondre le plus rapidement possible.\n\n
- Votre E-mail : $email \n
- Votre site : $url
- L'objet de votre message : $objet
- Votre message :
$message

Merci et à bientôt sur $mon_url !

Formulaire fourni par viki53 (http://viki53.free.fr/)";

    // Envoie du mail
    $entete = "From: " . $mon_mail . "\n
	Priorité: $priorité\n"; // On prépare l'entête du message
    $entete .= "";

    if (@mail($mon_email,$objet,$msg_pour_moi,$entete) && @mail($email,$objet,$accuse_pour_lui,$entete)){ // Si le mail a été envoyé
        echo "<p style=\"text-align:center\">Votre message a été envoyé, vous recevrez une confirmation par mail.<br /><br />\n"; // On affiche un message de confirmation
        echo "<a href=\"" . $mon_url . "\">Retour</a></p>\n"; // Avec un lien de retour vers l'accueil du site
    }
    else { // Sinon il y a eu une erreur lors de l'envoi
        echo "<p style=\"text-align:center\">Un problème s'est produit lors de l'envoi du message.\n";
        echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez...</a></p>\n"; // On propose un lien de retour vers le formulaire
    }
}
?>

Conclusion :


Et voilà un formulaire utile et simple.

Un maximum de détail peut se révéler utile.

P.S: Seul nom, email, objet et message sont obligatoires. La modification peut être faite très rapidement si vous souhaitez rendre d'autres champs obligatoires. A vous de jouer !

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (viki53)