Envoi données d'un formulaire vers email en PHP

Résolu/Fermé
coralie25095 Messages postés 3 Date d'inscription jeudi 18 août 2016 Statut Membre Dernière intervention 18 août 2016 - Modifié par jordane45 le 18/08/2016 à 11:40
Danielcoo Messages postés 31 Date d'inscription samedi 24 janvier 2015 Statut Membre Dernière intervention 25 septembre 2016 - 25 sept. 2016 à 05:42
Bonjour,

Je suis novice et je suis entrain de créer un site internet. Je voulais le laisser en html, et j'aimerais juste utiliser du php pour envoyer les données d'un formulaire. Le formulaire en html est déjà intégré au template. Malheureusement il y a un problème : lorsque j'envoie les données, je ne reçois pas les champs remplis.

Voici le mail que je reçois :
Objet : Un message sur mon site
Message : Nom :
Email :
Message :

J'ai fait de nombreuses recherches et tests avant de me tourner vers vous, je vous remercie d'avance ...



Voici le html (index.html) :
<form action = "envoi.php" method="post" name= "Submit"> <div class="col-md-6 to-animate-2">
<h3> Formulaire de contact</h3>
<div class="form-group ">
<label for="name" class="sr-only">Nom</label>
<input id="name" class="form-control" placeholder="Name" type="text">
</div>
<div class="form-group ">
<label for="email" class="sr-only">Email</label>
<input id="email" class="form-control" placeholder="Email" type="email">
</div>
<div class="form-group">
<label for="occation" class="sr-only">Occasion</label>
<select class="form-control" id="occation">
<option>Sélectionnez</option>
 <option>Repas quotidien</option>
 <option>Buffet</option>
 <option>Autres</option>
</select>
</div>
<div class="form-group ">
<label for="date" class="sr-only">Date</label>
<input id="date" class="form-control" placeholder="Date & Time" type="text">
</div>
 
 
 
<div class="form-group ">
<label for="message" class="sr-only">Message</label>
<textarea name="" id="message" cols="30" rows="5" class="form-control" placeholder="Message"></textarea>
</div>
<div class="form-group ">
<input class="btn btn-primary" value="Envoyer" name="envoi" type="submit">
</div>
 


Voici le php (envoi.php) :
<?php
 
$EmailFrom = $_POST['email']; 
$EmailTo = "contact@monsite.com";
$Subject = "Un message sur mon site";
$Nom = $_POST['name']; 
$Email = $_POST['email'];
$Occasion = $_POST['occation'];
$Message = $_POST['message']; 
 
// validation
$validationOK=true;
if (!$validationOK) {
  echo "Error";
  exit;
}
 
// mise en form mail
$Body = "";
$Body .= "Nom: ";
$Body .= $Nom;
$Body .= "\n";
$Body .= "Email: ";
$Body .= $Email;
$Body .= "\n";
$Body .= "Message: ";
$Body .= "\n";
$Body .= $Message;
$Body .= "\n";
 
// envoi email 
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");
 
// message success-error
if ($success){
  echo "Votre message à bien été envoyé.";
}
else{
  echo "Une erreur s'est produite à l'envoi de votre message.";
}
?>
 


Merci encore, je ne comprends pas ce qui cloche..

Coralie

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.

2 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
18 août 2016 à 11:44
Bonjour,

Où se trouve ton site web ? Sur un hébergeur internet ou tu le testes en local sur ton ordi ??

Si tu es en local :
- As tu bien installé (et utilisé ) un logiciel tel que wamp ou easyphp ou xampp ???
- quelle est l'URL qui apparait dans ton navigateur internet lorsque tu es sur ton site ? L'url commence bien par localhost ??
- as tu bien paramétré le smtp dans le php.ini ??

Si tu as hébergé ton site sur un serveur web :
- Quelle est le nom de ton hébergeur ?
- As tu vérifié qu'il autorisait l'utilisation de la fonction mail ?
- Qu'est-ce qui s'affiche lorsque tu te retrouves sur la page envoi.php ? Y a t'il un message d'erreur ?


Dans les deux cas, tu peux ajouter au début de ton code php la ligne suivante :
error_reporting(E_ALL);

pour afficher les erreurs php.


**** NB ****
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

.

1
coralie25095 Messages postés 3 Date d'inscription jeudi 18 août 2016 Statut Membre Dernière intervention 18 août 2016
18 août 2016 à 13:56
Bonjour,

Merci pour cette réponse rapide!
Et désolée pour la coloration syntaxique.

- En fait j'ai créé le site à partir d'un template en local, et pour voir le PHP je l'envoi via Filezilla à mon hébergeur (1&1). Du coup le php marche bien quand le site est publié sur 1&1.
- Je reçois bien le mail sur la boite mail 1&1 lorsque je clique sur "envoyer" dans mon formulaire, je présume donc qu'il autorise la fonction mail. Ce sont les champs qui ne sont pas envoyés...
- Lorsque je clique sur "Envoyer" un message s'affiche : "votre message a bien été envoyé". Et effectivement un mail est envoyé dans la foulée (avec le bon objet, et dans le message, uniquement le nom des champs : "Nom : ; email : ; message :) alors que j'ai complété le formulaire.

J’ai ajouté la ligne afin d’afficher les messages d’erreur, voici ce qu’il me met :

"Notice: Undefined index: email in /homepages/26/d643209173/htdocs/foodee/envoi.php on line 5

Notice: Undefined index: name in /homepages/26/d643209173/htdocs/foodee/envoi.php on line 8

Notice: Undefined index: email in /homepages/26/d643209173/htdocs/foodee/envoi.php on line 9

Notice: Undefined index: occation in /homepages/26/d643209173/htdocs/foodee/envoi.php on line 10

Notice: Undefined index: message in /homepages/26/d643209173/htdocs/foodee/envoi.php on line 11
Votre message à bien été envoyé."

Je ne comprends pas car dans index.html j’ai défini les champs « email », « name », « message », etc…

En même temps je n’y connais pas grand-chose. Est-ce plus clair pour vous ?

Si vous avez d’autres questions n’hésitez pas… Merci encore pour votre aide.

Coralie
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > coralie25095 Messages postés 3 Date d'inscription jeudi 18 août 2016 Statut Membre Dernière intervention 18 août 2016
18 août 2016 à 14:01
Le problème c'est que tu n'as pas mis d'attribut NAME dans tes éléments HTML.....
Par exemple :
<input id="email" class="form-control" placeholder="Email" type="email">

devrait être :
<input id="email" class="form-control" placeholder="Email" type="email" name="email">


De plus je t'invite à lire ceci : https://forums.commentcamarche.net/forum/affich-37636387-php-notice-undefined-index
et à appliquer les conseils sur la récupération "propre" des variables en php.
0
coralie25095 Messages postés 3 Date d'inscription jeudi 18 août 2016 Statut Membre Dernière intervention 18 août 2016
18 août 2016 à 23:02
Merci infiniment, tout marche après avoir appliqué tous vos conseils !

Très bonne soirée et encore merci!
0
Danielcoo Messages postés 31 Date d'inscription samedi 24 janvier 2015 Statut Membre Dernière intervention 25 septembre 2016 3
25 sept. 2016 à 05:42
Bonjour,
Consermant xampp je ne l'aime pas parce qu'il a trop d'erreur, ce que j'aime le plus c'est WebLocal parce qu'il es puissant et na jamais recu d'erreur contrairement a xampp.
le lien de téléchargement: http://ausea.eu.pn/
0