Programmer le formulaire de contact d'un template HTML

Résolu/Fermé
franck3007 Messages postés 11 Date d'inscription samedi 21 décembre 2013 Statut Membre Dernière intervention 29 janvier 2014 - 21 déc. 2013 à 15:39
GrifOli Messages postés 2111 Date d'inscription samedi 28 juin 2008 Statut Membre Dernière intervention 26 mars 2020 - 22 déc. 2013 à 23:55
Bonjour,
Je suis en train de créer un site internet vitrine en HTML5/CSS.
J'ai acheté un template pour ne pas avoir à commencer from scratch mais je n'arrive pas à faire fonctionner le formulaire de contact. J'ai cherché un peu partout mais je n'y arrive pas car je n'ai pas de connaissances en php.
Mon formulaire se trouve dans un fichier "contact.html" et se présente comme ça :


<div class="input-container active">
<div class="wrapper">
<h3 class="title">Contactez nous!</h3>
<input type="text" name="nom" placeholder="Nom">
<input type="text" name="mail" placeholder="E-mail">
<input type="text" name="tel" placeholder="Téléphone">
<textarea name="message" placeholder="Message"></textarea>
<button name="send">ENVOYER</button>
</div>
</div>

Je n'arrive pas à éditer le fichier php pour l'envoie ni le lien entre le fichier mon fichier contact.html et contact.php

Si quelqu'un peut m'aider,
Merci beaucoup,
A voir également:

6 réponses

Utilisateur anonyme
21 déc. 2013 à 16:44
Il te faut déjà changer ce code ci :



<div class="input-container active">
<div class="wrapper">
<h3 class="title">Contactez nous!</h3>
<form method="POST" action="envoi.php">
<input type="text" name="nom" placeholder="Nom">
<input type="text" name="mail" placeholder="E-mail">
<input type="text" name="tel" placeholder="Téléphone">
<textarea name="message" placeholder="Message"></textarea>
<button name="send">ENVOYER</button>
</form>
</div>
</div>


Ensuite concernant l'envois, il te faut tout d'abord te renseigner sur le PHP (pour ici la fonction POST pour savoir l'utiliser ainsi que la fonction qui envoit des mails en PHP.

Je pourrais te donner un code tout fait mais je ne vois pas l'interêt ^^

Après si tu veux tout faire sur la même page, tu peux changer le action="".

Regarde ici : https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/913099-transmettez-des-donnees-avec-les-formulaires

Et ici : http://fr.openclassrooms.com/informatique/cours/e-mail-envoyer-un-e-mail-en-php

Voilà ;)
0
franck3007 Messages postés 11 Date d'inscription samedi 21 décembre 2013 Statut Membre Dernière intervention 29 janvier 2014
21 déc. 2013 à 20:25
Merci beaucoup pour tes explications,
Je ne pense pas être loin.

Je reçois le mail mais tout est vide. J'ai essayé de changer pleins de valeurs mais sans réussite.
Voila le code de mon fichier envoi.php.
Qu'est-ce qui ne va pas ?

Je n'ai ni l'expéditeur, ni l'objet du mail mais par contre un mail avec :

de:
tel:
mail:
message:

sans rien d'autre.

<?php
$mail = 'franck@gmail.com'; // Déclaration de l'adresse de destination.
if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // On filtre les serveurs qui rencontrent des bogues.
{
$passage_ligne = "\r\n";
}
else
{
$passage_ligne = "\n";
}
//=====Déclaration des messages au format texte et au format HTML.
$message_txt = "de : $_post_nom<p>tel : $_post_tel<p>mail : $_post_mail<p>message : $_post_message";
$message_html = "<html><head></head><body>de : $_post_nom<p>tel : $_post_tel<p>mail : $_post_mail<p>message : $_post_message</body></html>";
//==========

//=====Création de la boundary
$boundary = "-----=".md5(rand());
//==========

//=====Définition du sujet.
$sujet = "Formulaire de contact";
//=========

//=====Création du header de l'e-mail.
$header = "From: $_post_nom <$_post_mail>".$passage_ligne;
$header.= "Reply-to: $_post_nom <$_post_mail>".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
//==========

//=====Création du message.
$message = $passage_ligne."--".$boundary.$passage_ligne;
//=====Ajout du message au format texte.
$message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_txt.$passage_ligne;
//==========
$message.= $passage_ligne."--".$boundary.$passage_ligne;
//=====Ajout du message au format HTML
$message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_html.$passage_ligne;
//==========
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
//==========

//=====Envoi de l'e-mail.
mail($mail,$sujet,$message,$header);
//==========
?>

Merci beaucoup,
0

Moi j'utilise ce code :
 

 
 $entete = "MIME-Version: 1.0\r\n";
$entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
$entete .= "From: <$emailadmin>\r\n";
$entete .= "Reply-To: $emailadmin\r\n";
mail(destinataire@qqchose.fr,'Titre du message' , message, $entete); 
0
franck3007 Messages postés 11 Date d'inscription samedi 21 décembre 2013 Statut Membre Dernière intervention 29 janvier 2014
21 déc. 2013 à 21:24
Ça ne marche pas.
Je viens de le mettre dans mon fichier php en modifiant
$emailadmin --> $mail
destinataire@qqchose.fr --> mon mail
Titre du message --> formulaire de contact
message --> $message
$entete --> $header

mais rien ne se passe et je n'ai même pas de mail

J'ai pourtant fais cette page php avec le cours openclassroom que tu m'a envoyé.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
GrifOli Messages postés 2111 Date d'inscription samedi 28 juin 2008 Statut Membre Dernière intervention 26 mars 2020 591
Modifié par GrifOli le 21/12/2013 à 21:32
Bonjour,

Tes variables qui récupèrent le contenu du formulaire sont mal définies dans le fichier php.

Tu dois avoir $_POST['nom'] et non pas $_post_nom
->même chose pour $_POST['tel'], $_POST['mail'] et $_POST['message'].
0
franck3007 Messages postés 11 Date d'inscription samedi 21 décembre 2013 Statut Membre Dernière intervention 29 janvier 2014
21 déc. 2013 à 23:08
Bonsoir,

Je viens de changer toutes mes variable comme tu me l'a dit plus haut mais :

Si j'utilise les [ ], il y a pleins d'erreur qui apparaissent sur dreamweaver et lorsque j'essaye, j'ai : message d'erreur + pas de mail

Si j'utilise les ( ), il n'y a plus d'erreur sur dreamwerver et lorsque j'essaye, jai :
Pas de message d'erreur + mail mais le mail est :

de : Array('nom')
tel : Array('tel')

mail :

message :

Ça correspond a quoi ces Array('xxx') ??
J'ai essayé de chercher sur internet et ils parlent de tableaux et de correspondance avec plusieurs occurrences.
0
GrifOli Messages postés 2111 Date d'inscription samedi 28 juin 2008 Statut Membre Dernière intervention 26 mars 2020 591
Modifié par GrifOli le 22/12/2013 à 03:27
Je n'ai jamais utilisé Dreamwaver, je ne sais pas quel genre de message d'erreur ça te donne, mais c'est le façon de récupérer des données issues d'un formulaire de type "post". Tu peux éditer des fichiers .php avec Notepad++

Essaye cela et dis-moi si ça fonctionne.
0
franck3007 Messages postés 11 Date d'inscription samedi 21 décembre 2013 Statut Membre Dernière intervention 29 janvier 2014
22 déc. 2013 à 14:16
J'ai refait tout mon fichier php avec notepad++ mais c'est exactement la même chose.
Je ne sais pas du tout comment procéder pour recevoir le mail de ce formulaire quand les utilisateurs clic sur "ENVOYER".

Pour rappel, voila le code HTML de mon formulaire :

        <div class="input-container active">
<div class="wrapper">
<h3 class="title">Contactez nous!</h3>
<form method="POST" action="envoi.php">
<input type="text" name='nom' placeholder="Nom">
<input type="text" name='mail' placeholder="E-mail">
<input type="text" name='tel' placeholder="Téléphone">
<textarea name='message' placeholder="Message"></textarea>
<button name="send">ENVOYER</button>
</form>
</div>
</div>

Il y a t'il une erreur dans ce code ?

Ensuite, j'ai créer un fichier php : envoi.php mais ce sont les commandes que je dois écrire dans ce fichier que je n'arrive pas a correctement écrire.

Merci
0
franck3007 Messages postés 11 Date d'inscription samedi 21 décembre 2013 Statut Membre Dernière intervention 29 janvier 2014
22 déc. 2013 à 20:08
Quelqu'un aurait-il une idée pour m'aider avec ce formulaire de contact ?
Vraiment je suis coincé.

Merci beaucoup
0
GrifOli Messages postés 2111 Date d'inscription samedi 28 juin 2008 Statut Membre Dernière intervention 26 mars 2020 591
22 déc. 2013 à 22:10
Je regarde ça de mon côté en testant ton code html et php et je te reviens.
0
GrifOli Messages postés 2111 Date d'inscription samedi 28 juin 2008 Statut Membre Dernière intervention 26 mars 2020 591
22 déc. 2013 à 22:28
Bon, j'ai corrigé ton code. L'erreur venait du fait que tu n'avais pas mis tes variables $_POST[''] entre { } alors qu'elles étaient sur une ligne de texte. C'est pour cela que son contenu n'était pas récupéré. J'ai corrigé les erreurs, j'ai mis ton code sur un serveur et l'envoi du courriel a fonctionné (j'avais changé ton adresse courriel pour la mienne).

Voici donc ton code corrigé (seulement le fichier .php, ton html est correct).


<?php
$mail = 'franck@gmail.com'; // Déclaration de l'adresse de destination.
if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // On filtre les serveurs qui rencontrent des bogues.
{
$passage_ligne = "\r\n";
}
else
{
$passage_ligne = "\n";
}
//=====Déclaration des messages au format texte et au format HTML.
$message_txt = "de : {$_POST['nom']}<br/>tel : {$_POST['tel']}<br/>mail : {$_POST['mail']}<br/>message : {$_POST['message']}";
$message_html = "<html><head></head><body>de : {$_POST['nom']}<p>tel : {$_POST['tel']}</p><p>mail : {$_POST['mail']}</p><p>message : {$_POST['message']}</p></body></html>";
//==========

//=====Création de la boundary
$boundary = "-----=".md5(rand());
//==========

//=====Définition du sujet.
$sujet = "Formulaire de contact";
//=========

//=====Création du header de l'e-mail.
$header = "From: {$_POST['nom']} <{$_POST['mail']}>".$passage_ligne;
$header.= "Reply-to: {$_POST['nom']} <{$_POST['mail']}>".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
//==========

//=====Création du message.
$message = $passage_ligne."--".$boundary.$passage_ligne;
//=====Ajout du message au format texte.
$message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_txt.$passage_ligne;
//==========
$message.= $passage_ligne."--".$boundary.$passage_ligne;
//=====Ajout du message au format HTML
$message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_html.$passage_ligne;
//==========
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
//==========

//=====Envoi de l'e-mail.
mail($mail,$sujet,$message,$header);
//==========
?>
0
franck3007 Messages postés 11 Date d'inscription samedi 21 décembre 2013 Statut Membre Dernière intervention 29 janvier 2014
22 déc. 2013 à 23:44
MERCI BEAUCOUP GrifOli !

Ca marche nikel.

Super.
0
GrifOli Messages postés 2111 Date d'inscription samedi 28 juin 2008 Statut Membre Dernière intervention 26 mars 2020 591
22 déc. 2013 à 23:55
Ça m'a fait plaisir! Mets le sujet en résolu :)
0