Formulaire de contact multichamps

Soyez le premier à donner votre avis sur cette source.

Snippet vu 34 509 fois - Téléchargée 17 fois

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

Ajouter un commentaire

Commentaires

mariemrzg
Messages postés
1
Date d'inscription
samedi 9 janvier 2010
Statut
Membre
Dernière intervention
7 avril 2010

merci beaucoup
ca m'aide beaucoup
cs_votreavenir
Messages postés
2
Date d'inscription
vendredi 7 août 2009
Statut
Membre
Dernière intervention
16 décembre 2010

Bonsoir à tous,

Voila, je suis desesperé, je suis en train de créer un site de voyance et je souhaiterais savoir si quelqu'un pourrais m'aider à creer un formulaire de contact qui serai variable afin de l'adapter a chacun des voyants. J'ai déja creer le formulaire en HTML mais apres je ne sais pas c'est quoi fair pour recevoir les informations chez moi, je sais que entendu parler d'un Script CGI mais je n'arrive pas à la programmer, si une personne pourrais m'aider à programmer un formulaire qui fonctionne, je lui en serais très reconnaissant, ce modèle me permettrai d'adapter pour mes autres voyants.

Je vous en remercie d'avance.
lyesben
Messages postés
1
Date d'inscription
lundi 12 janvier 2009
Statut
Membre
Dernière intervention
19 février 2009

Il est nul ton code...
dsyann
Messages postés
17
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
19 août 2009

salut
je pense que ton code est bien a quelques exceptions pres:
tu pouvais simplifier la plupart des taches via des fontions ou methodes mais la n'est pas l'important.
Tu as en effet charge trop la memoire de variable disant le comme ca redondante:
mettre un post qlq chose dans @var. c la mm chose.
En plus j'aime pas sature mon serveur web ni de donnéee ou quoi que ce soit par des requetes tantot inutil.
J veux dire par la c'est qu'on a pas besoin d'aller envers le serveur web pour verifier la conformite de l'email par exmple: javascript peut le faire. c'est le cas avec des controls sur des champs vides. Ou est passe ces bon codes longs, droles qu'on adorait en javascript. en effet quand nous develloppons pour la maison ca marche mais plus le serveur est attaque faudrait peut etre reflechir a moins surcharge les serveurs, c'est pas une verite absolue mais juste ce que je pense
bil800
Messages postés
13
Date d'inscription
lundi 25 juillet 2005
Statut
Membre
Dernière intervention
24 mars 2008

Important!

1- Petite correction dans la ligne $entete "From: ". $mon_mail ."\n il faudra la remplcer par $entete "From: ". $mon_email ."\n

Cela permet d'avoir l'entete exacte du message ;)
Afficher les 21 commentaires

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)