Formulaire de contact en PHP

Dans ce tutoriel, vous allez apprendre à faire un formulaire de contact en PHP. Concrètement, cela permet à vos visiteurs de vous envoyer des emails, via un formulaire. Vous recevrez donc des emails, avec le message du visiteurs, son pseudo, son adresse email (pour lui répondre c’est plus pratique :p) et d’autres informations comme son site internet. C’est simple à mettre en place et pratique !

Pour une fois, c’est un tutoriel qui n’est pas très long et il n’y a pas de grosses difficultés, hormis les regex. Si vous avez un peu de mal avec ça, je vous conseille de lire le tutoriel disponible sur le site du zéro, vous pouvez aussi regarder le tutoriel sur le bbcode et geshi qui contient pas mal d’expression régulière.
Ensuite, je n’ai pas évoqué un problème dans la vidéo, ce sont les bots. Les bots pour faire simple, c’est des systèmes qui remplissent automatiquement les champs sur des sites, pour spammer. Pour éviter cela, il faudrait ajouter un captcha, ce n’est pas super compliqué à mettre en place mais je n’avais pas envie de faire une vidéo trop longue. Il existe d’autres méthodes pour piéger les bots, comme le champs invisible. L’idée, c’est de créer un champ, de type input par exemple, qui n’est pas visible pour l’utilisateur normal (on le cache avec du CSS par exemple). Le robot qui remplie tout automatiquement, va remplir ce champ invisible, et par conséquent on peut les détecter comme ça. De plus c’est simple à mettre en place (CSS + une condition en php).

Maintenant les codes.

1. Le code du formulaire

<form method="post" target="" id="formulaire_contact">
		
<fieldset>
<legend>Formulaire de contact</legend>
<label for="pseudo">Pseudo* :</label><input type="text" name="pseudo" id="pseudo" value="<?php if(isset($_POST['pseudo'])) echo htmlspecialchars($_POST['pseudo']); ?>"/><br/>
<label for="email">Email* :</label><input type="text" name="email" id="email" value="<?php if(isset($_POST['email'])) echo htmlspecialchars($_POST['email']); ?>" /><br/>
<label for="site">Site :</label><input type="text" name="site" id="site" value="<?php if(isset($_POST['site'])) echo htmlspecialchars($_POST['site']); ?>" /><br/>
<label for="message">Message* :</label><textarea name="message" id="message"><?php if(isset($_POST['message'])) echo htmlspecialchars($_POST['message']); ?></textarea><br/>
<input type="submit" value="Envoyer" /> <span style="color:red;"><?php echo $erreur; ?></span><span style="color:green"><?php echo $info;?></span>
</fieldset>
	
</form>

2. Le code CSS pour la mise en forme (Regarder ce tutoriel aussi)

3. Le code PHP qui traite les données et envoie le mail

label {
	display:block; 
	width:150px; 
	float:left;
	text-align:left;
	padding-right:5px;
	margin-bottom:2px; 
}


fieldset
{
	border: solid 1px #222;
}
fieldset legend
{
	padding: 0 10px;
	border-left: #222 1px solid;
	border-right: #222 1px solid;
	font-size: 1.2em;
	color: #222;

}
#formulaire_contact textarea
{
	width:180px;
	height:150px;
}


Télécharger les sources en .zip

Télécharger les sources en .tar.gz

Voilà, le tutoriel est fini, j’espère que vous avez compris le principe et surtout n’hésitez pas à modifier le code ! Si vous avez des questions, laissez un commentaire ou allez faire un tour sur le forum.

(Image à la une : PHP code)

55 commentaires ont été ajoutés, ajoutez le vôtre.

Vous pouvez laisser un commentaire, cependant je ne peux pas vous garantir qu'il sera modéré rapidement ou qu'il aura une réponse, faute de temps pour m'occuper du site.

  1. masabetiso

    Merci pour ce tuto. Ayant essayé plusieurs tutos de formulaire de contact le votre est le seul à fonctionner en local

  2. Folder

    moi la ligne 15 du code PHP ne fonctionne pas! ca me met :
    Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\wamp\www\Folder-&-Cie\envoi.php on line 15

    • Madrzejewski Alexis

      Bonjour Folder,

      Wamp, qu’on utilise en local pour tester des sites est réputé pour ne pas fonctionner correctement avec les emails. Il faut faire des configurations supplémentaire (ajouter un serveur SMTP par exemple) ou alors tester sur un mutualisé si vous en avez un.

  3. Elijah

    Hello ! Merci beaucoup pour tous ces merveilleux tuto agréable a suivre… cependant j’aurais voulu savoir si ce formulaire est bien un formulaire destiné à etre mis sur un site car je cherche à l’utiliser pour mon book (html5) en ligne et ça ne fonctionne pas. Je ne reçois rien, les msg d’erreur ou le merci ne s’affiche pas…
    Merci d’avance pour ta reponse !

    • Madrzejewski Alexis

      Bonjour,

      Le tutoriel date un peu et je ne l’ai jamais utilisé avec HTML5. Il faudra probablement revoir la partie des formulaires, mais la partie en PHP doit être bonne normalement.
      Si les erreurs ne s’affichent pas, c’est peut être du à la configuration de php (display error sur off).

  4. popoti

    Bonjour

    Super tuot, clair, et fonctionnel.
    Mais il manque un anti spam, sinon bravo.

  5. Olivier C

    Merci pour votre formulaire, il est très simple et accessible, je vois que la sauvegarde est mise à jour par rapport au tuto. Personnellement j’ai passé les input en html5, accompagnés de « placeholder » et « required pattern » pour les regex. Bien à vous.

  6. gerald

    Bonjour,

    J’ai utilisé votre tutoriel pour créer un formulaire de contact en PHP.
    Tout marche, c’est super.
    http://www.confiance.asso.fr/confiancesite/lettre.php

    Je souhaite séparer ma page nommée lettre.html dans laquelle se trouve le formulaire
    et créer une page envoi.php. avec uniquement votre code php.

    J’ai indiqué dans la page « lettre.html »

    Pas de chance rien ne marche ?
    http://www.confiance.asso.fr/confiancesite/lettre.html

    Je ne suis pas assez féru de code pour trouver la solution tout seul.

    Avez-vous un instant pour regarder si oui avez vous un solution.
    Par avance un grand merci.

    Gérald

  7. Juan

    Un grand merci pour ce tutoriel, je n’ai pas l’habitude d’écrire des remerciements après avoir fait un tutoriel, mais celui-ci est extrêmement explicite. Un grand merci, j’ai enfin réussi à me dépatouiller avec mon formulaire grâce à toi.