Rapatrier données d'un formulaire vers mail
Dalida Messages postés 7114 Date d'inscription Statut Contributeur Dernière intervention -
Pour rappatrier les données d'un formulaire de contact sur mon site ( http://www.en-scene-association.fr ), j'utilisait jusqu'à présent le service gratuit de QuickWeb.com.
Mais voilà, la pub, ainsi que le message d'alerte terroriste (enfin presque...) à chaque envoi de formulaire, c'est pas le top.
Connaîtriez vous un autre service à installer directement sur son serveur, du style Raynette, pour faire cela ?
Ou alors suffit-il d'indiquer son mail en cible du formulaire ?
Un autre problème : la validation du formulaire avec les champs obligatoires, le type de données dans chaque champ, n'est pas très efficace avec Dreamweaver. Connaîtriez vous un site où c'est expliqué ou une astuce ou quelque chose pour le faire soi-même ?
Merci beaucoup d'avance
Ciao
Configuration: Windows XP Firefox 2.0.0.6
37 réponses
- 1
- 2
Rapatrier les données d'un formulaire de contact et remplacer un service externe par une solution installée sur le serveur est recherché pour éviter les publicités et les alertes, tout en assurant la validation des champs. Plusieurs répondants présentent du code PHP de validation et d'envoi de mail, avec vérification de l'email, des champs obligatoires et des possibilités d'échappement des caractères. D'autres évoquent des problèmes pratiques comme le traitement des retours à la ligne dans le message et les erreurs de syntaxe ou d'encodage, ainsi que des conseils pour valider un code postal numérique. Des intervenants soulignent des problématiques liées à l'écriture et à l'évasion des guillemets dans les chaînes lors de la construction des en-têtes et du contenu HTML.
-
Bonjour Mysterious_fea,
su peux faire ça, si tu veux l'envoyer sur ton mail perso :
<h3>Formulaire de contact</h3>
<p> </p>
<form action="mailto:franciskerros@aol.com" onSubmit="return checkrequired(this)" method="post" enctype="text/plain" name="mail0">
<p><strong>Motif de votre message :</strong>
<select name="Motif" id="Motif">
<option>Demander un renseignement</option>
<option>Prendre rendez-vous pour un cours</option>
<option>Autre motif</option>
</select>
</p>
<p><strong>Votre nom* :</strong>
<input name="Nom" type="text" id="Nom" size="35" maxlength="35" />
</p>
<p><strong>Votre adresse :</strong>
<input name="Adresse" type="text" id="Adresse" size="35" maxlength="60" />
<br />
<br />
<strong>Votre Code Postal :</strong>
<input name="Code_postal" type="text" id="Code_postal" size="5" maxlength="5" />
<br />
<br />
<strong>Votre ville :</strong>
<input name="Ville" type="text" id="Ville" value="" size="35" maxlength="35" />
</p>
<p><strong>Votre adresse e-mail :</strong>
<input name="Email" type="text" id="Email" value="" size="35" maxlength="45" />
</p>
<p><strong>Votre (vos) numéro(s) de téléphone :</strong>
<input name="Telephone1" type="text" id="Telephone1" size="10" maxlength="10" />
<strong>-</strong>
<input name="Telephone2" type="text" id="Telephone2" size="10" maxlength="10" />
</p>
<p><strong>Votre message* :</strong></p>
<p>
<textarea name="Message" cols="50" rows="12" wrap="virtual" id="Message"></textarea>
</p>
<p> </p>
<p align="center">Merci de renseigner les champs munis d'un <strong>*</strong> ainsi qu'un moyen de vous contacter<br />
(adresse, téléphone, mail) pour que nous puissions vous répondre </p>
<p align="center"><input name="Reinitialiser" type="reset" id="Reinitialiser" value="Réinitialiser" />
<input name="Envoyer" type="submit" id="Envoyer" value="Envoyer" /></p>
</form>
@+ -
Salut.
Regardes par là : webmaster un formulaire de contact pour votre site -
salut,
et aussi un cours sur developpez.com.
-
Merci je vais regarder. Eng ros, Dalida, il suffit de mettre mon mail en "action", t'as pas besoin de out recopier...
Et les champs obligatoires ?
Merci -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
la méthode de paco66330 est du html pur.
avantage : pas besoin d'un serveur php et le code est on ne peut plus simple.
inconvénient : ton mail apparait en clair (incitation au spam), aucune véritable vérification des données n'est possible (vérification possible avec JavaScript, mais il peut être désactivé).
pour vérifier les données envoyées il faut le faire avec php. pour cela utilises l'article de SSylvainSab, il y a tout ou presque.
j'ai ajouté le cours de developpez.com car il contient toutes les balises, ça te permets d'adapter le formulaire de SSylvainSab avec des listes d'option, des cases à cocher…
regarde aussi cet article pour le traitement des données du $_POST.
-
Bonsoir Dalida,
j'ai répondu à Mysterious_fea pour sa demande en HTML, parce que j'ai été voir son site qui est tout en HTML.
Je me suis dis que cela serait plus facile pour lui, cependant tu as tout à fait raison quand au PHP, pour la vérification des données.
@+ -
OK merci à vous. Là pour le moment je ne suis pas à fond dans les formulaires mais dès que j'ai un peu de temps je vais voir tout ça à tête reposé et je suis sûr que je trouverais ce que je cherche. Quant au PHP, je ne suis pas contre, et je vais surement l'utiliser, mais je verrais.
Merci à vous. Je vous informe de l'avancée de la situation...
Ciao -
C'est bon, j'ai commencé à m'y plonger.
Comment faire pour obliger un champ à être numérique et à contenir N chiffres ? (code postal ou téléphone)
Merci -
Merci de répondre à ma première question sur les nombres.
Un autre truc : regardez http://www.ensceneassociation.fr/formulaire.php
Comment faire pour que les boutons envoyer et reset soient sur la même ligne ?
Merci -
Pour que les boutons soient sur la même ligne, tu les mets tous les deux dans le même <p
<p class="bt">
<input name="envoi" id="send" tabindex="4" value="Envoyer" type="submit">
<input name="reini" id="reset" tabindex="5" value="Réinitialiser" type="reset"></p>
Pour la question sur la verif nombre tu veux en javascript ou en php
il y a les regex, vas voir sur le site www.siteduzero.com -
Merci
C'est en PHP
Mais est-ce possible de vérifier si c'est des chiffres mais de ne pas rendre le champ obligatoire ?
Ciao -
Pour revenir à ta dernière réponse :
Je pouvais pas faire ce que tu m'avais dis :
<?php $Envoi="\n".'<p class="bt"> <input name="envoi" id="send" tabindex="4" value="Envoyer" type="submit"></p>'; $Reini="\n".'<p class="bt"> <input name="reini" id="reset" tabindex="5" value="Réinitialiser" type="reset"></p>';
Comment je fais pour les mettre dans le même <p> si c'est deux variables différentes ? Eh ben j'ai enlevé les <p> pour mettre des <span>, et j'ai changé le CSS correspondant.
Merci
-
Pour verifier si numerique et égal à 5:
une solution:
if($_POST['code_postal']!="" ){
if( is_numeric($_POST['code_postal']) && strlen($_POST['code_postal']=="5")) {
//ok
}
} -
-
Voilà mon code :
<?php $Envoi="\n".'<span class="bt"> <input name="envoi" id="send" tabindex="4" value="Envoyer" type="submit"></span>'; $Reini="\n".'<span class="bt"> <input name="reini" id="reset" tabindex="5" value="Réinitialiser" type="reset"></span>'; if (isset($_POST['message'])) { // La variable $verif va nous permettre d'analyser si la sémantique de l'email est bonne $verif='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,5}$#'; //quelques remplacements pour les specialchars $message=preg_replace('#(<|>)#', '-', $_POST['message']); $message=str_replace('"', "'",$message); $message=str_replace('&', 'et',$message); $nom=preg_replace('#(<|>)#', '-', $_POST['nom']); $nom=str_replace('"', "'",$nom); $nom=str_replace('&', 'et',$nom); $adresse=preg_replace('#(<|>)#', '-', $_POST['adresse']); $adresse=str_replace('"', "'",$adresse); $adresse=str_replace('&', 'et',$adresse); $ville=preg_replace('#(<|>)#', '-', $_POST['ville']); $ville=str_replace('"', "'",$ville); $ville=str_replace('&', 'et',$ville); // On assigne et/ou protège nos variables $votremail=stripslashes(htmlentities($_POST['votremail'])); $message=stripslashes(htmlspecialchars($message)); $nom=stripslashes(htmlspecialchars($nom)); $motif=stripslashes(htmlspecialchars($motif)); $adresse=stripslashes(htmlspecialchars($adresse)); $code=stripslashes(htmlspecialchars($code)); $ville=stripslashes(htmlspecialchars($ville)); $tel=stripslashes(htmlspecialchars($tel)); $por=stripslashes(htmlspecialchars($por)); //input envoi $envoi=htmlentities($_POST['envoi']); //on enlève les espaces $votremail=trim($votremail); $message=trim($message); $nom=trim($nom); $adresse=trim($adresse); $code=trim($code); $ville=trim($ville); $tel=trim($tel); $pot=trim($pot); /*On vérifie si l'e mail et le message sont pleins, et on agit en fonction. (on affiche Apercu du resultat, tel ou tel champ est vide, etc...*/ //Si ca ne vas pas (mal rempli, mail non valide...) {if((empty($message))or(empty($nom))or(!preg_match($verif,$votremail))) { //les 3 champs sont vides if(empty($votremail)and(empty($message))and(empty($nom))) { echo '<p class="bt">Merci de remplir tous les champs marqués d\'une astérisque.</p>'; $message='';$votremail='';$nom=''; } //un des champs est vide else { if(!preg_match($verif,$votremail)) echo'<p class="bt">Votre adresse e-mail n\'est pas valide.</p>'; else { echo'<p class="bt">Merci de remplir tous les champs munis d\'une astérisque.</p>'; } } } else echo '<p class="bt">Le Code Postal que vous avez entré n\'est pas valide.</p>'; $message='';$votremail='';$nom=''; //Si les deux sont pleins et que l'adresse est valide, on envoie on on prévisualise sans envoi else { $domaine=preg_replace('#[^@]+@(.+)#','$1',$votremail); $DomaineMailExiste=checkdnsrr($domaine,'MX'); if(!$DomaineMailExiste) echo'<p class="bt">Le nom de domaine de l\'adresse e-mail que vous avez entrée n\'existe pas.</p>'; elseif(!empty($envoi)) { $objet='.::'.$motif.' de '.$nom.' - Formulaire du site::.'; $headers='From:'.$votremail."\r\n".'To:'.$mail."\r\n".'Subject:'.$objet."\r\n".'Content-type:text/html;charset=fr-ascii\r\n'.'MIME-Version: 1.0\r\n'.'Sent:'.date('l, F d, Y H:i'); $messagefinal='Motif du message : '.$motif."\r\n".'Nom : '.$nom."\r\n".'Adresse : '.$adresse.' - '.$code.' '.$ville."\r\n".'Numéro(s) de téléphone : '.$tel.' - '.$por."\r\n".'Message : '."\r\n".$message."\r\n"; if(mail($destinataire,$objet,$messagefinal,$headers)) { echo "<script language=\"JavaScript\"> <!-- document.location=\"/formulaire-envoye.html#form\"; //--> </script>"; } else echo'<p class="bt">Votre message n\'a pas pu être envoyé correctement. Merci de réessayer.</p>'; } else echo'<p class="bt">Une condition innatendue est survenue lors de l\'exécution du script. Merci de réessayer en remplissant correctement tous les champs marqués d\'une astérisque.</p>'; } } else { echo '<p class="bt">Remplissez tous les champs munis d\'une astérisque et cliquez sur le bouton "Envoyer".</p>'; $votremail='';$message='';$nom='';$adresse='';$code='';$ville='';$tel='';$por=''; } ?>
Comment faire rentrer ma vérif. du Code Postal et du téléphone là-dedans ?
Merci -
Si tu veux un message d'erreur si pas numerique ou diff de 5:
if($_POST['code_postal']!="" ){ if( !is_numeric($_POST['code_postal']) || strlen($_POST['code_postal']!="5")) { //message d'erreur echo "La saisie du code postal n'est pas correcte !"; } }
!is_numeric veut dire pas numerique et != pas égal à (!="" pas vide) (!="5" pas égal à 5) ( || OU ) -
Je bloque là ! J'ai essayé de modifier le code, mais maintenant il me dis qu'il y a une erreur à la ligne 185.
Peux-tu localiser le problème stp ( http://www.ensceneassociation.fr/formulaire.txt ) ?
Merci beaucoup ! -
-
Elle contient { et ce n'est pas la dernière.
Peux tu copier le fichier txt ds ton éditeur é essayé de voir stp ?
Merci -
salut,
tu pourrais donner l'erreur en entier et localiser la ligne.
c'est un strict minimum…
pour ton fichier, il fait 123 lignes, ça va être dur de trouver la ligne incriminée.
ça manque d'éléments !
- 1
- 2