[Javascript & php] formulair d'e mail
Résolu
nina_bee
Messages postés
18
Date d'inscription
Statut
Membre
Dernière intervention
-
cr -
cr -
bonjour je suis en train de finnaliser un site et pour cela j'ai besoin d'un formulaire de contact.
J'ai donc créé le formulaire de contact avec une fonction de vérification en javascript et l'envoi du formulaire à mon adresse mail. Une fois le message envoyé le visiteur est redirrigé vers une page "merci le message a été envoyé" et la possibilité de revenir à l'index.
Le problemem c'est que rien ne marche!!!
ni la vérification javascriptn ni l'envoi de mail, a chaque fois l'utilisateur est redirrigé vers la page suivante mais je ne reçois rien du tout. Si le formulaire est mal rempli l'alert javascript ne marche pas....
voila le code de ma page contact:
et la page mail:
je ne sais pas si l'interaction javascript php bloque ou si j'ai fait une erreur quelque part...
Merci d'avance à tout ceux qui répondront
J'ai donc créé le formulaire de contact avec une fonction de vérification en javascript et l'envoi du formulaire à mon adresse mail. Une fois le message envoyé le visiteur est redirrigé vers une page "merci le message a été envoyé" et la possibilité de revenir à l'index.
Le problemem c'est que rien ne marche!!!
ni la vérification javascriptn ni l'envoi de mail, a chaque fois l'utilisateur est redirrigé vers la page suivante mais je ne reçois rien du tout. Si le formulaire est mal rempli l'alert javascript ne marche pas....
voila le code de ma page contact:
<script language="JavaScript" type="text/JavaScript"> <!-- var name = navigator.appName var os=navigator.platform //alert("plateforme de l'utilisateur : "+os); if (name == "Microsoft Internet Explorer"){ url=('<link href="mediashow-ie.css" rel="stylesheet" type="text/css" />'); }else{ url=('<link href="mediashow.css" rel="stylesheet" type="text/css" />'); } document.write(url); function verif_formulaire() { if(document.formulaire.mail.value == "") { alert("Veuillez saisir votre adresse e-mail"); document.formulaire.nom.focus(); return false; } if(document.formulaire.wwww.value == "") { alert("Veuillez saisir l'adresse de votre site internet"); document.formulaire.lieu.focus(); return false; } if(document.formulaire.text.value == "") { alert("Veuillez saisir votre message"); document.formulaire.text.focus(); return false; } if(document.formulaire.mail.value.indexOf('@') == -1) { alert("veuillez saisir votre adresse mail au format monadresse@monadresse.fr"); document.formulaire.mail.focus(); return false; } if(document.formulaire.tel.value == "") { alert("Veuillez saisir votre numéro de téléphone"); document.formulaire.tel.focus(); return false; } var chkZ = 1; for(i=0;i<document.formulaire.tel.value.length;++i) if(document.formulaire.age.value.charAt(i) < "0" || document.formulaire.age.value.charAt(i) > "9") chkZ = -1; if(chkZ == -1) { alert("Veuillez saisir votre numéro de téléphone au format 01.55.49.22.10 ou 06.55.22.10"); document.formulaire.tel.focus(); return false; } }//fin de la fonction de verification du formulaire //--> </script> </head> //Formulaire: <form action="mail.php" method="post" name="contact" target="_self" id="contactmediashow" enctype="application/x-www-form-urlencoded" onsubmit="return verif_formulaire()" > <input type="hidden" name="destinataire" value="nina_bee@hotmail.fr" id="destinataire"/> <input type="hidden" name="objet" value="contact client" id="objet" /> <p> <label for="mail" class="formText">Votre adresse e-mail professionnelle: </label><br> <span class="champs"> <input name="mail" type="text" id="mail" size="40" onkeyup="javascript:couleur(this);" /> </span></p> <p> <label for="www" class="formText">Votre site web entreprise:</label><br> <span class="champs"> <input name="www" type="text" id="www" size="40" onkeyup="javascript:couleur(this);" /> </span> </p> <p> <label for="text" class="formText">Votre message: </label><br> <span class="champs"> <textarea name="text" cols="31" rows="15" id="text" onkeyup="javascript:couleur(this);"></textarea> </span> </p> <p> <label for="tel" class="formText">Votre numéro de téléphone : </label><br> <span class="champs"> <input name="tel" type="text" id="tel" size="40" onkeyup="javascript:couleur(this);"/> </span> </p> <p align="right" class="formText"><input type="submit" value="envoi" name="submit" onclick="return verif_formulaire()" /></p> </form>
et la page mail:
<p class="texteNormal"> <?php $mail = mail($destinataire,$siteclient,$mailclient,$message,$tel); if(isset($mail)){ echo "Message envoyé"; } ?></p> <p align="center"><a href="contact.php" class="lien">retour à la page de contact</a> - <a href="index.php" class="lien">retour à la page d'acceuil</a></p>
je ne sais pas si l'interaction javascript php bloque ou si j'ai fait une erreur quelque part...
Merci d'avance à tout ceux qui répondront
A voir également:
- [Javascript & php] formulair d'e mail
- É majuscule - Guide
- Publipostage mail - Accueil - Word
- Windows live mail - Télécharger - Mail
- Adresse e-mail oubliée ? - Guide
- Telecharger javascript - Télécharger - Langages
7 réponses
Bonjour,
Plusieurs choses à mon avis :
- tout d'abord pour ma part je n'utilise pas le balise label, je ne la connais pas, mais j'utilise des <input type="text" name="nom_champ" ...>
- votre formulaire n'a pas de nom, il faudrait rajouter dans la balise form la propriété suivante name="nom_formulaire".
- ceci fait on accède en javascript aux différentes entrées de la manière suivante : document.nom_formulaire.nom_champ.value, notamment dans le cas d'un champs texte, les champs "boutons radio" étant un poil plus complexes.
Dans la partie mail.php, les variables ne seront pas récupéré avec le code tel qu'il est. Il faut utiliser le tableau $_POST qui contient les variables passées en post.
Par exemple pour l'entrée de formulaire <input type="text" name="mail">, le script doit récupérer le contenu grâce à la variable $_POST['mail']. Autrefois il était souvent possible de récupérer cette valeur en tapant directement $mail dans le code, mais pour des raisons de sécurité maintenant il faut le plus souvent passer par des tableau globaux ($_POST pour les variables passée en mode post, $_GET pour les variables passées en mode get c'est à dire dans l'url).
Autrement je ne sais pas quel navigateur vous utilisez, mais Firefox dispose d'une "console javascript" très pratique pour le développeur car elle affiche les erreurs de javascript avec les lignes incriminées.
Ben :)
Plusieurs choses à mon avis :
- tout d'abord pour ma part je n'utilise pas le balise label, je ne la connais pas, mais j'utilise des <input type="text" name="nom_champ" ...>
- votre formulaire n'a pas de nom, il faudrait rajouter dans la balise form la propriété suivante name="nom_formulaire".
- ceci fait on accède en javascript aux différentes entrées de la manière suivante : document.nom_formulaire.nom_champ.value, notamment dans le cas d'un champs texte, les champs "boutons radio" étant un poil plus complexes.
Dans la partie mail.php, les variables ne seront pas récupéré avec le code tel qu'il est. Il faut utiliser le tableau $_POST qui contient les variables passées en post.
Par exemple pour l'entrée de formulaire <input type="text" name="mail">, le script doit récupérer le contenu grâce à la variable $_POST['mail']. Autrefois il était souvent possible de récupérer cette valeur en tapant directement $mail dans le code, mais pour des raisons de sécurité maintenant il faut le plus souvent passer par des tableau globaux ($_POST pour les variables passée en mode post, $_GET pour les variables passées en mode get c'est à dire dans l'url).
Autrement je ne sais pas quel navigateur vous utilisez, mais Firefox dispose d'une "console javascript" très pratique pour le développeur car elle affiche les erreurs de javascript avec les lignes incriminées.
Ben :)
alors j'ai bien pris note et de mon coté j'ai corrigé certaine choses (dont le problème de nom du formulaire).
A présent ça marche....ou presque: mon code vérifie seulement que le premier champ n'est pas vide....
Quant au php c'est un oubli de ma part je n'ai pas mis tout le code (faut dire que je m'y perd un peu dans toutes ces pages car ça fait un bout de temsp que je suis bloquée sur cette page de contact... désolée)
alors voili mon code =p
page contact.php
mail.php
deplus meme quand le premier champ est vide je suis redirrigée vers mail.php!!!
Quand à l'email il n'arrive jammais dans ma boite
Merci encore pour vos conseils, j'espere que vous saurez m'aider encore un peu
A présent ça marche....ou presque: mon code vérifie seulement que le premier champ n'est pas vide....
Quant au php c'est un oubli de ma part je n'ai pas mis tout le code (faut dire que je m'y perd un peu dans toutes ces pages car ça fait un bout de temsp que je suis bloquée sur cette page de contact... désolée)
alors voili mon code =p
page contact.php
<script language="JavaScript" type="text/JavaScript"> <!-- var name = navigator.appName var os=navigator.platform //alert("plateforme de l'utilisateur : "+os); if (name == "Microsoft Internet Explorer"){ url=('<link href="mediashow-ie.css" rel="stylesheet" type="text/css" />'); }else{ url=('<link href="mediashow.css" rel="stylesheet" type="text/css" />'); } document.write(url); function verif_formulaire() { if(document.contact.mail.value == "") { alert("Veuillez saisir votre adresse e-mail"); document.contact.nom.focus(); return false; } if(document.contact.wwww.value == "") { alert("Veuillez saisir l'adresse de votre site internet"); document.contact.lieu.focus(); return false; } if(document.contact.text.value == "") { alert("Veuillez saisir votre message"); document.contact.text.focus(); return false; } if(document.contact.mail.value.indexOf('@') == -1) { alert("veuillez saisir votre adresse mail au format monadresse@monadresse.fr"); document.contact.mail.focus(); return false; } if(document.contact.tel.value == "") { alert("Veuillez saisir votre numéro de téléphone"); document.contact.tel.focus(); return false; } var chkZ = 1; for(i=0;i<document.contact.tel.value.length;++i) if(document.contact.age.value.charAt(i) < "0" || document.contact.age.value.charAt(i) > "9") chkZ = -1; if(chkZ == -1) { alert("Veuillez saisir votre numéro de téléphone au format 01.55.49.22.10 ou 06.55.22.10"); document.contact.tel.focus(); return false; } }//fin de la fonction de verification du formulaire //--> </script> //formulaire: <p align="center"> <form action="mail.php" method="post" name="contact" id="contact" onsubmit="return verif_formulaire(contact)" > <input type="hidden" name="destinataire" value="nina_bee@hotmail.fr" id="destinataire"/> <input type="hidden" name="objet" value="contact client" id="objet" /> <p> <label for="mail" class="formText">Votre adresse e-mail professionnelle: </label><br> <span class="champs"> <input name="mail" type="text" id="mail" size="40" /> </span></p> <p> <label for="www" class="formText">Votre site web entreprise:</label><br> <span class="champs"> <input name="www" type="text" id="www" size="40" /> </span> </p> <p> <label for="text" class="formText">Votre message: </label><br> <span class="champs"> <textarea name="text" cols="31" rows="15" id="text" ></textarea> </span> </p> <p> <label for="tel" class="formText">Votre numéro de téléphone : </label><br> <span class="champs"> <input name="tel" type="text" id="tel" size="40" /> </span> </p> <p align="right" class="formText"><input type="submit" value="envoi" name="submit" /></p> </form> </p>
mail.php
<?php $destinataire = $_POST['destinataire']; $objet = $_POST['objet']; $mailclient = htmlentities("From: ".$_POST['mail']); $siteclient = $_POST['www']; $message = stripslashes(htmlentities($_POST['text'])); $tel = $_POST['tel']; ?> <body> ...du code... <p class="texteNormal"> <?php $mail = mail($destinataire,$siteclient,$mailclient,$message,$tel); if(isset($mail)){ echo $destinataire." ".$siteclient." ".$mailclient." ".$message." ".$tel."<br>"; echo "Message envoyé"; } ?></p> <p align="center"><a href="contact.php" class="lien">retour à la page de contact</a> - <a href="index.php" class="lien">retour à la page d'acceuil</a></p> </body>
deplus meme quand le premier champ est vide je suis redirrigée vers mail.php!!!
Quand à l'email il n'arrive jammais dans ma boite
Merci encore pour vos conseils, j'espere que vous saurez m'aider encore un peu
re!!
merci d'avoir mis le doigt dessus. Maintenant mes champs sont vérifiés et si il sont vide ou si ils ne sont pas au bon format, l'alert s'affiche. Par contre quand le champs mail ou le champs www sont vides, je suis quand meme redirigée vers mail.php. Je ne comprend pas pourquoi?
merci d'avoir mis le doigt dessus. Maintenant mes champs sont vérifiés et si il sont vide ou si ils ne sont pas au bon format, l'alert s'affiche. Par contre quand le champs mail ou le champs www sont vides, je suis quand meme redirigée vers mail.php. Je ne comprend pas pourquoi?
Décidément :)
Bon, alors, je pense que le problème vient de là :
<input name="mail" type="text" id="mail" size="40" />
Tu ne définis pas de "value". Le value sera défini par le navigateur quand l'utilisateur aura mis un texte. Je suis prêt à parier que si au lieu de valider tout de suite, tu rentres du texte, puis l'efface, ça marchera correctement !
Donc, avant ça, mail.value n'existe pas. Et ne vaut donc pas "".
Essaie de définir ton champ comme cela :
<input name="mail" type="text" id="mail" size="40" value="" />
Idem, bien sûr, pour tous tes champs texte.
Bon, alors, je pense que le problème vient de là :
<input name="mail" type="text" id="mail" size="40" />
Tu ne définis pas de "value". Le value sera défini par le navigateur quand l'utilisateur aura mis un texte. Je suis prêt à parier que si au lieu de valider tout de suite, tu rentres du texte, puis l'efface, ça marchera correctement !
Donc, avant ça, mail.value n'existe pas. Et ne vaut donc pas "".
Essaie de définir ton champ comme cela :
<input name="mail" type="text" id="mail" size="40" value="" />
Idem, bien sûr, pour tous tes champs texte.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
coucou!! merci pour ton aide.malheureusement ca ne marche pas.... Par contre ca m'a donné une idée: en mettant value=" ", le champ mail et le champ www ne sont pas remplis au bon format donc je recois eune alerte et cette fois je ne passe pas à la page suivante. Bon c'est carrément de la bidouille mais ca marche alors merci!!!!=p
par contre je reste bloquée par le php (argh si pres du but....)
********^_^***********
par contre je reste bloquée par le php (argh si pres du but....)
********^_^***********
A part ça, je suis tout-à-fait d'accord avec ce que tu dis, à un détail prêt : son formulaire a déjà un nom : name="contact".
Donc, nina_bee, dans tout ton javascript, ce ne sont pas des document.formulaire.champ qu'il faut utiliser, mais des document.contact.champ. Ou alors, renomme le formulaire en name="formulaire", au choix.
Par ailleurs, pour débugger le javascript, je te conseille de l'utiliser sous Firefox : il a une console JavaScript très efficace ! ("Outils -> Console d'erreur" : tu vides tout ce qu'il y a dedans, tu recharges ta page, et au final tu y retrouves toutes les erreurs de ta page.)