Créer un formulaire de contact pour votre site

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.
Voici un petit formulaire (en PHP) de contact pour votre site fonctionnant également sous FREE. La mise en place en place est simple. L'extention de votre fichier doit être en .php.
Changer les 4 variables ci-dessous dans le code:
  1. $mon_email = "Votre adresse email"; 
  2. $mon_pseudo = "Votre pseudo";
  3. $mon_url = "url de votre site";
  4. Merci et à bientôt sur http://votre-site.free.fr";
<?php
// Si le formulaire a été soumis
if (isset($_POST["envoyer"])){ 
	// On initialise notre etat à erreur, il sera changé à "ok" si la vérification du formulaire est un succès, sinon il reste à erreur
	$etat = "erreur"; 
	// 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["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 rempli le champ pseudo
	if (empty($_POST["son_pseudo"])) { 
		// On met dans erreur le message qui sera affiché
		$erreur="Vous n'avez pas entr&eacute; votre pseudo..."; 
	}
	// L'utilisateur n'a pas rempli le champ email
	elseif (empty($_POST["son_email"])) {
		$erreur="Nous avons besoin de votre e-mail pour vous r&eacute;pondre...";
	}
	// On vérifie si l'email est bien de la forme messagerie@domaine.fr
	elseif (!preg_match("$[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["son_email"])){ 
		$erreur="Votre adresse e-mail n'est pas valide...";
	}
	// L'utilisateur n'a pas rempli le champ objet
	elseif (empty($_POST["son_objet"])) { 
		$erreur="Vous devez entrer l'objet de votre message...";
	}
	// L'utilsateur n'a écrit aucun message
	elseif (empty($_POST["son_message"])) { 
		$erreur="Merci de saisir un message...";
	}
	// Si tous les champs sont valides, on change l'état à ok
	else { 
		$etat="ok";
	}
}
// Sinon le formulaire n'a pas été soumis
else { 
	// On passe donc dans l'état attente
	$etat="attente"; 
}
// 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!="ok"){ 
	// Cas où le formulaire a été soumis mais il y a des erreurs
	if ($etat=="erreur"){ 
		// On affiche le message correspondant à l'erreur
		echo "<span style=\"color:red\">".$erreur."</span><br /><br />\n"; 
	}
	?>

	<!-- Formulaire HTML qu'on affiche dans l'état attente ou erreur -->
	<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>"> 
	<!-- Les données du formulaire seront récupérée avec la méthode POST, et action correspond à la page contenant le formulaire -->
	<p style="text-align:left;">
	
	<!-- Intitulé du champ pseudo -->
	<label for="son_pseudo">Pseudo *</label><br/> 
	<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
	echo htmlspecialchars($_POST["son_pseudo"],ENT_QUOTES);
	// htmlspecialchars() convertit les caractères spéciaux en leurs code html, exemple : & devient &amp; 		
	}?>" />

	<br/>
	
	<!-- Intitulé du champ e-mail -->
	<label for="son_email">E-mail *</label><br/> 
	<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><br/>
	<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">Objet *</label><br/> 
	<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">Message *</label><br /> 
	<textarea name="son_message" id="son_message" cols="60" rows="25"><?php if(isset($_POST["son_message"])){
		// le message a été saisi --> le réafficher
		echo htmlspecialchars($_POST["son_message"],ENT_QUOTES);}?>
	</textarea>

	<br />

	<!-- Bouton de validation -->
	<input type="submit" name="envoyer" value="Envoyer" />
	<input type="reset" name="reset" value="Effacer" />
	
	</p>
	</form>
	<!-- FIN du formulaire HTML -->

	<?php
}
// Sinon l'état est ok donc on envoie le mail
else { 
	// On stocke les variables récupérées du formulaire
	$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"];
	
	// Mise en forme du message que vous recevrez
	$mon_email = "***"; 
	$mon_pseudo = "**";
	$mon_url = "***";
	$msg_pour_moi = "- Son pseudo : $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\n";

	// Mise en forme de l'accusé réception qu'il recevra
	$accuse_pour_lui = "Bonjour $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 http://creer-un-site.fr !";

	// 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 &eacute;t&eacute; envoy&eacute;, 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"; 
	}
}
?>
Le formulaire de contact retourne un message d'erreur si le formulaire n'est pas correctement remplit.
Le formulaire de contact envoie un récapitulatif du message à l'envoyeur.
Script du formulaire de contacte.
Voir/déposer un commentaire (157) | Signaler un problème