Formulaire de contact vide à la réception
Résolu/Fermé
jenny131078
Messages postés
170
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
23 mars 2014
-
20 nov. 2010 à 20:58
jenny131078 Messages postés 170 Date d'inscription mardi 22 mai 2007 Statut Membre Dernière intervention 23 mars 2014 - 22 nov. 2010 à 19:35
jenny131078 Messages postés 170 Date d'inscription mardi 22 mai 2007 Statut Membre Dernière intervention 23 mars 2014 - 22 nov. 2010 à 19:35
A voir également:
- Formulaire de contact vide à la réception
- Accusé de reception gmail - Guide
- Probleme de reception tnt aujourd'hui 2023 - Guide
- Accusé de reception outlook - Guide
- Www.hotmail.com boite de réception ✓ - Forum Hotmail / Outlook.com
- Coeur vide ✓ - Forum Facebook
5 réponses
yo, il manques point virgule à la fin de la commande mail()
mail($mail,$sujet,$message,$header)
En php la fonction la plus utile est echo, fait un test avant l'envoi pour vérifier que la variable du message contient bien quelque chose , genre:
echo $message;
Il manques la concaténation sur cette ligne:
$message = "$formNom $formMail vous contact via votre formulaire.\n \n message : \n $formMessage";
Les guillemets sont pour du texte UNIQUEMENT, pour les variables on n'en as pas besoin, si on veut les ajouter(concaténer) il faut utiliser le point comme séparateur et l'antislash(\) sert à "échapper" certains caractères spéciaux.
Sur cette ligne c'est bon:
$message = $passage_ligne."--".$boundary.$passage_ligne;
Par contre erreur sur la ligne suivante(le point devant le = indique qu'on ajoute au lieu de remplacer la valeur):
$message.= "Content-Type: multipart/alternative;".$passage_ligne."
Il faut écrire ceci:
$message.= "Content-Type: multipart/alternative;".$passage_ligne;
je comprends pas l'interêt du passage à la ligne en cas d'email non valide...
Voici la Référence pour le php sur la page de la fonction mail(), à savoir que débutant ou confirmé on passes son temps avec le manuel, c'est inutile d'apprendre toutes les fonctions par coeur^^.
https://www.php.net/manual/fr/function.mail.php
C'est dans le headers(en tête) et non dans le message.
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
Commencez par un mail tout simple histoire de voir comment ça marche plutôt que de faire des trucs plus compliqués et sans comprendre le fonctionnement et où vous répetez les erreurs qui sont évidentes quand on a fait la version la plus simple.
Euh pour la vérification d'email en gros si l'email est bon on sautes une ligne, s'il est pas bon on sautes 2 lignes?(\r= reurn carriage/retour chariot et \n= newline deux façons qui font en gros la même chose). Il y a une erreur dans la logique, en tout cas c'est pas ce qu'on fait habituelement dans un formulaire, si on demande un champ email et qu'n y met pas un email soit on n'envoit pas le formulaire et on demandes à l'utilisateur de corriger soit on envoit mais sans noter une valeur fausse...
Pour la vérification d'email ou de champ rempli mieux vaut le faire en javascript(qui travaille sur l'ordinateur client) plutôt qu'en php qui doit se connecter au serveur pour fonctionner donc est plus lent et va faire travailler le serveur pour rien dans le cas où le champ est vide ou son contenu non valide.
Bon courage
mail($mail,$sujet,$message,$header)
En php la fonction la plus utile est echo, fait un test avant l'envoi pour vérifier que la variable du message contient bien quelque chose , genre:
echo $message;
Il manques la concaténation sur cette ligne:
$message = "$formNom $formMail vous contact via votre formulaire.\n \n message : \n $formMessage";
Les guillemets sont pour du texte UNIQUEMENT, pour les variables on n'en as pas besoin, si on veut les ajouter(concaténer) il faut utiliser le point comme séparateur et l'antislash(\) sert à "échapper" certains caractères spéciaux.
Sur cette ligne c'est bon:
$message = $passage_ligne."--".$boundary.$passage_ligne;
Par contre erreur sur la ligne suivante(le point devant le = indique qu'on ajoute au lieu de remplacer la valeur):
$message.= "Content-Type: multipart/alternative;".$passage_ligne."
Il faut écrire ceci:
$message.= "Content-Type: multipart/alternative;".$passage_ligne;
je comprends pas l'interêt du passage à la ligne en cas d'email non valide...
Voici la Référence pour le php sur la page de la fonction mail(), à savoir que débutant ou confirmé on passes son temps avec le manuel, c'est inutile d'apprendre toutes les fonctions par coeur^^.
https://www.php.net/manual/fr/function.mail.php
C'est dans le headers(en tête) et non dans le message.
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
Commencez par un mail tout simple histoire de voir comment ça marche plutôt que de faire des trucs plus compliqués et sans comprendre le fonctionnement et où vous répetez les erreurs qui sont évidentes quand on a fait la version la plus simple.
Euh pour la vérification d'email en gros si l'email est bon on sautes une ligne, s'il est pas bon on sautes 2 lignes?(\r= reurn carriage/retour chariot et \n= newline deux façons qui font en gros la même chose). Il y a une erreur dans la logique, en tout cas c'est pas ce qu'on fait habituelement dans un formulaire, si on demande un champ email et qu'n y met pas un email soit on n'envoit pas le formulaire et on demandes à l'utilisateur de corriger soit on envoit mais sans noter une valeur fausse...
Pour la vérification d'email ou de champ rempli mieux vaut le faire en javascript(qui travaille sur l'ordinateur client) plutôt qu'en php qui doit se connecter au serveur pour fonctionner donc est plus lent et va faire travailler le serveur pour rien dans le cas où le champ est vide ou son contenu non valide.
Bon courage
jenny131078
Messages postés
170
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
23 mars 2014
2
21 nov. 2010 à 01:31
21 nov. 2010 à 01:31
Merci pour ta réponse!
Entre temps, j'ai pu constater le nombre d'erreur qu'il y avait dans ce script;)
Je l'ai amélioré et surtout allégé, et il fonctionne.
Je reçois le mail comme je voulais le recevoir. Il faut dire que j'ai supprimé la majorité de ce que j'ai indiqué plus haut.
Maintenant je cherche à valider certains champs que je souhaite rendre obligatoire. Les expressions que j'ai ajouté avec les fonctions "if" et "echo" ne fonctionnent pas du tout, encore une chose que je ne maitrise pas décidément!!!
Je vais suivre ton conseil en utilisant le javascript qui me paraît selon tes indications plus efficace surtout que je souhaiterais que les messages d'erreur apparaissent sous forme de "box".
Si tu as des conseils la dessus je suis preneuse
Merci beaucoup
Voici mon nouveau php :
/*Récupération des variables du formulaire*/
$nom = $_POST['nom'];
$telephone = $_POST['telephone'];
$email = $_POST['mail'];
$message = $_POST['message'];
/*Mise en forme de l'email*/
$msg = "<p>Vous venez de recevoir un message depuis le formulaire du site : https://www.pagesjaunes.fr/ <br />
Voici les informations : <br /><p>
Nom : $nom <br />
Telephone : $telephone <br />
Email : $email <br /><p>
Message : $message</p>";
/*Mise en forme des header*/
$mail = $_POST['mail'];
$header = "From: \"$nom\" <$mail>\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-type: text/html; charset=iso-8859-1\r\n";
$header .= "To: \"Mon Site\" <contact@monsite.com>\r\n";
$subject = $_POST['sujet'];
/* Vérification */
if ( $email == "" ) {
echo "Veuillez votre e-mail.";
$erreur = true;
}
if ( $message == "" ) {
echo "Veuillez indiquer votre message.";
$erreur = true;
}
/* Vérification du mail */
$email_regex = "^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+.[a-z0-9-]";
if ( $email == "" OR !eregi( $email_regex , $email ) ) {
echo "Veuillez indiquer un email valide.";
$erreur = true;
}
/* Envoi du mail */
if(mail("contact@monsite.com", $subject, $msg, $header))
{
header('Location: merci.html');
}
else
{
echo "Suite a une erreur, votre message n'a pas été envoyé. Merci de renouveller l'opération.";
?>
Entre temps, j'ai pu constater le nombre d'erreur qu'il y avait dans ce script;)
Je l'ai amélioré et surtout allégé, et il fonctionne.
Je reçois le mail comme je voulais le recevoir. Il faut dire que j'ai supprimé la majorité de ce que j'ai indiqué plus haut.
Maintenant je cherche à valider certains champs que je souhaite rendre obligatoire. Les expressions que j'ai ajouté avec les fonctions "if" et "echo" ne fonctionnent pas du tout, encore une chose que je ne maitrise pas décidément!!!
Je vais suivre ton conseil en utilisant le javascript qui me paraît selon tes indications plus efficace surtout que je souhaiterais que les messages d'erreur apparaissent sous forme de "box".
Si tu as des conseils la dessus je suis preneuse
Merci beaucoup
Voici mon nouveau php :
/*Récupération des variables du formulaire*/
$nom = $_POST['nom'];
$telephone = $_POST['telephone'];
$email = $_POST['mail'];
$message = $_POST['message'];
/*Mise en forme de l'email*/
$msg = "<p>Vous venez de recevoir un message depuis le formulaire du site : https://www.pagesjaunes.fr/ <br />
Voici les informations : <br /><p>
Nom : $nom <br />
Telephone : $telephone <br />
Email : $email <br /><p>
Message : $message</p>";
/*Mise en forme des header*/
$mail = $_POST['mail'];
$header = "From: \"$nom\" <$mail>\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-type: text/html; charset=iso-8859-1\r\n";
$header .= "To: \"Mon Site\" <contact@monsite.com>\r\n";
$subject = $_POST['sujet'];
/* Vérification */
if ( $email == "" ) {
echo "Veuillez votre e-mail.";
$erreur = true;
}
if ( $message == "" ) {
echo "Veuillez indiquer votre message.";
$erreur = true;
}
/* Vérification du mail */
$email_regex = "^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+.[a-z0-9-]";
if ( $email == "" OR !eregi( $email_regex , $email ) ) {
echo "Veuillez indiquer un email valide.";
$erreur = true;
}
/* Envoi du mail */
if(mail("contact@monsite.com", $subject, $msg, $header))
{
header('Location: merci.html');
}
else
{
echo "Suite a une erreur, votre message n'a pas été envoyé. Merci de renouveller l'opération.";
?>
Voici un de mes vieux code de formulaire en javascript qui as plusieurs inconvénients mais a l'avantage d'indiquer toutes les erreurs, j'ai rajouté des commentaires après les signes //
Bien sûr il faut que chaque zone du formulaire ai le nom correspondant, par exemple :
Et pour appliquer notre fonction au formulaire il faut l'indiquer dans le bouton d'envoi:
<input type="button" value="S'inscrire" onClick="controle()" style="background-color:gold;color:blue;font-weight:bold;" />
(note je n'ai pas mis de type="submit" puisque l'on ne le soumets seulement s'il ets bon à la fin de la fonction javascript.
Voici un tuto complet:
https://www.toutjavascript.com/savoir/savoir06_1.php3
<head> <script type="text/javascript" language="javascript"> function controle() { var msg="";//création d'une variable vide if(document.formulaire.nom.value=='')// si le champ nom ne contient rien { msg+='Entrez votre nom'; } else if(!isNaN(document.formulaire.nom.value))// si ce n'ets pas un nombre { msg+='-Nom invalide'; } if(document.formulaire.prenom.value=='') { msg+='-Entrez votre prénom'; } else if(!isNaN(document.formulaire.prenom.value)) { msg+='-Prénom invalide'; } if(document.formulaire.telephone.value=='') { msg+='-Entrez votre téléphone'; } else if(isNaN(document.formulaire.telephone.value) || document.formulaire.telephone.value.length<10) // un peu casse pied puisqu'il faut rentrer excatement 10 chiffres sans //séparateurs { msg+='-Téléphone invalide'; } var verifemail=''; if(document.formulaire.email.value=='')// il y a mieux avec les expressions //régulières mais ceci marche dans la plupart des cas { msg+='-Entrez votre email'; } else if ((document.formulaire.email.value.lastIndexOf(".") < document.formulaire.email.value.indexOf("@")+2 || document.formulaire.email.value.lastIndexOf(".") > document.formulaire.email.value.length-3 || document.formulaire.email.value.indexOf("@") < 1 ) ) { msg+='-Email invalide'; } if(document.formulaire.motdepasse.value=='') { msg+='-Entrez un mot de passe'; } else if(document.formulaire.verifmdp.value=='') { msg+='-Confirmez votre mot de passe'; } else if(document.formulaire.motdepasse.value!=document.formulaire.verifmdp.value) { msg+='-Le mot de passe et sa confirmation sont différents'; } if(msg==""){// si notre variable msg est vide il n'y a pas d'erreur // donc c'est envoyé document.formulaire.method = "POST"; document.formulaire.action="merci.php";// on envoie sur la page qui fait le //traitement document.formulaire.submit(); }else{ alert(msg+'\n -Merci de vérifier votre saisie-'); // sinon on affiche les erreurs } } </script> <noscript> <!-- ça ne marcheras pas si l'utilisateur a désactivé javascript on l'indiques --> Vous devez activer le javascript dans votre navigateur </noscript>
Bien sûr il faut que chaque zone du formulaire ai le nom correspondant, par exemple :
<form name="formulaire" ... <input type="text" name="telephone" />
Et pour appliquer notre fonction au formulaire il faut l'indiquer dans le bouton d'envoi:
<input type="button" value="S'inscrire" onClick="controle()" style="background-color:gold;color:blue;font-weight:bold;" />
(note je n'ai pas mis de type="submit" puisque l'on ne le soumets seulement s'il ets bon à la fin de la fonction javascript.
Voici un tuto complet:
https://www.toutjavascript.com/savoir/savoir06_1.php3
jenny131078
Messages postés
170
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
23 mars 2014
2
21 nov. 2010 à 02:10
21 nov. 2010 à 02:10
Merci beaucoup, je vais étudier tout ça! et te tiens au courant
Bonne nuit;)))))))))
Bonne nuit;)))))))))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jenny131078
Messages postés
170
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
23 mars 2014
2
22 nov. 2010 à 19:35
22 nov. 2010 à 19:35
Hello,
J'ai testé ton script! Il fonctionne parfaitement pour mon formulaire. Je le ferais évoluer quand je maitriserais mieux tout ça!
Merci beaucoup pour ton aide.
Bonne soirée
J'ai testé ton script! Il fonctionne parfaitement pour mon formulaire. Je le ferais évoluer quand je maitriserais mieux tout ça!
Merci beaucoup pour ton aide.
Bonne soirée