[Javascript & php] formulair d'e mail
Résolu/Fermé
nina_bee
Messages postés
18
Date d'inscription
mardi 21 mars 2006
Statut
Membre
Dernière intervention
31 juillet 2007
-
5 mars 2007 à 12:04
cr - 31 août 2007 à 04:03
cr - 31 août 2007 à 04:03
A voir également:
- [Javascript & php] formulair d'e mail
- Publipostage mail - Accueil - Word
- É - Guide
- Windows live mail - Télécharger - Mail
- Telecharger javascript - Télécharger - Langages
- Adresse e-mail oubliée ? - Guide
7 réponses
benkeeper
Messages postés
81
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
26 janvier 2008
45
5 mars 2007 à 14:26
5 mars 2007 à 14:26
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 :)
nina_bee
Messages postés
18
Date d'inscription
mardi 21 mars 2006
Statut
Membre
Dernière intervention
31 juillet 2007
5 mars 2007 à 15:21
5 mars 2007 à 15:21
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
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
5 mars 2007 à 15:38
5 mars 2007 à 15:38
Autre erreur :
formulaire :
<input name="www" type="text" id="www" size="40" />
et, dans les tests JS :
if(document.contact.wwww.value == "") {
Un w de trop ! Donc il s'arrête là, c'est pour ça que les tests suivants ne sont pas fait :)
formulaire :
<input name="www" type="text" id="www" size="40" />
et, dans les tests JS :
if(document.contact.wwww.value == "") {
Un w de trop ! Donc il s'arrête là, c'est pour ça que les tests suivants ne sont pas fait :)
nina_bee
Messages postés
18
Date d'inscription
mardi 21 mars 2006
Statut
Membre
Dernière intervention
31 juillet 2007
5 mars 2007 à 15:55
5 mars 2007 à 15:55
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?
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
5 mars 2007 à 16:01
5 mars 2007 à 16:01
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
nina_bee
Messages postés
18
Date d'inscription
mardi 21 mars 2006
Statut
Membre
Dernière intervention
31 juillet 2007
5 mars 2007 à 17:14
5 mars 2007 à 17:14
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....)
********^_^***********
5 mars 2007 à 15:04
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.)