> Tous les forums > Forum des Webmasters
 Formulaire de contact
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
rosefleur
  Posté le 11/10/2006 @ 11:44 
Aller en bas de la page 
Petite astucienne
Bonjour à tous,[hello] J'ai mis un formulaire de contact dans mon site. Il fonctionne car je reçois bien les informations envoyées. J'aurais voulu que lors de l'envoi du formulaire par le visiteur un message confirme que tout c'est bien déroulé. J'y suis parvenue mais ce message ne s'affiche pas à l'endroit que je voudrais sur ma page. J'aurais voulu aussi si ça n'est pas trop demandé indiquer que tous les champs doivent être rempli. Voici le code php du formlaire (il y a de l'espagnol mais c'est normal). [code]<?php $nom=$_POST['nom']; $email=$_POST['mail']; $rue=$_POST['rue']; $message=$_POST['message']; /////voici la version Mine $headers = "MIME-Version: 1.0\r\n"; //////ici on détermine le mail en format text $headers .= "Content-type: text/plain; charset=iso-8859-1\r\n"; ////ici on détermine l'expediteur et l'adresse de réponse $headers .= "From: $nom <$mail>\r\nReply-to : $nom <$mail>\nX-Mailer:PHP"; $objet="Pedida a partir del sitio"; $destinataire="monmail@adress.be"; $body .="$nom :\n"; $body .="$email :\n"; $body .="$rue :\n"; $body .="$message :\n"; if (mail($destinataire,$objet,stripslashes($body),$headers,"-f $email")) { echo "<div class='story'>El mensaje siguiente se nos transmitió bien, y les agradecemos. Le contestaremos lo más rápido posible. Hasta pronto"; } else { echo "<div class='story'>ERROR, ERROR, el mensaje no has ido transmitido"; } ?>[/code] Merci de m'aider [smile]
Publicité
slipknot8
 Posté le 11/10/2006 à 18:11 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

C complexe ...
koala01
 Posté le 11/10/2006 à 18:47 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Salut, Il faut savoir que la commande "echo" écrira ce qu'on lui demande à l'endroit où on la lance… Ainsi, il suffit, apres avoir défini toutes les variables nécessaires, de placer les lignes [code] if (mail($destinataire,$objet,stripslashes($body),$headers,"-f $email")) { echo "<div class='story'>El mensaje siguiente se nos transmitió bien, y les agradecemos. Le contestaremos lo más rápido posible. Hasta pronto"; } else { echo "<div class='story'>ERROR, ERROR, el mensaje no has ido transmitido"; }[/code] là ou tu souhaites qu'elles apparaissent effectivement sur la page de résultat [clindoeil] Pour la deuxieme question, le plus simple, c'est de vérifier si la valeur récupérée dans les différents champs est une valeur acceptable… On peut déjà commencer par modifier un tout petit peu les quatre premières lignes de manière à supprimer les espaces surnuméraires à gauche et à droite sous la forme de [code] $nom=trim($_POST['nom']); $email=trim($_POST['mail']); $rue=trim($_POST['rue']); $message=trim($_POST['message']); [/code] Une fois cela fait, on peut vérifier si les variables que l'on vient de récupérer sont correctesé… On va d'ailleurs utiliser une variable temporaire pour garder la liste des erreurs commises [clindoeil] Tant qu'à faire, on en profitera pour vérifier que l'adresse E-mail est au bon format: au minimum une arobase (@) suivie par un point (.) qui ne peut pas etre ni tout de suite apres l'arobase, ni en derniere position… [code] <? // la variable temporaire, logiquement appelée erreur // à la base, elle est vide $erreur=""; //vérification du nom: //Si le nom est vide, on le met dans la variable erreur if($nom=="") $erreur="Veuillez introduire votre nom"; //vérification de l'E-mail //le champs était peut etre vide if($email=="") { //erreur n'est peut etre plus vide, il peut etre intéressant //d'aller à la ligne if($erreur!="") $erreur+="<br>"; //et on rajoute le fait que l'email n'a pas été introduite $erreur+="Veuillez introduire votre adresse E-mail"; } else { //Le champs email était remplis, mais, est-ce une adresse // E-mail valide ??? // les expressions régulières viennent à notre secours if(!ereg ("^[^@ ]+@[^@ ]+\.[^@ \.]+$", $email)) { //encore une fois, ce n'est peut etre pas la premiere //erreur, et il faut peut etre aller à la ligne if($erreur!="") $erreur+="<br>"; //et on rajoute le fait que l'email n'est pas valide $erreur+="L'adresse E-mail introduite n'est pas valide"; } } //vérification de la rue if(rue=="") { // on vérifie si c'est la premiere erreur, mais tu commences // sans doute à comprendre le principe ;-) if($erreur!="") $erreur+="<br>"; $erreur+="Veuillez introduire votre rue"; } // et on termine par la vérifcation du message, c'est toujours // pareil ;-) if($message=="") { if($erreur=="") $erreur+="<br>"; $erreur+="un message vide n'a pas beaucoup d'intéret"; } //arrivé ici, on vérifie si erreur est encore vide // si c'est le cas, c'est que le formulaire a été bien remplis if(erreur=="") { //on peut utiliser les valeurs pour créer le mail //voici la version Mine $headers = "MIME-Version: 1.0\r\n"; //ici on détermine le mail en format text $headers .= "Content-type: text/plain; charset=iso-8859-1\r\n"; //ici on détermine l'expediteur et l'adresse de réponse $headers .= "From: $nom <$mail>\r\nReply-to : $nom <$mail>\nX-Mailer:PHP"; $objet="Pedida a partir del sitio"; $destinataire="monmail@adress.be"; $body .="$nom :\n"; $body .="$email :\n"; $body .="$rue :\n"; $body .="$message :\n"; } else { //ici, il y a eu une erreur, que faut-il faire??? //sans doute réinsérer le formulaire, et quitter le script ;-) //(insertion du formulaire, la fonction include devrait faire //cela tres bien) //forcer le script à quitter die(); } ?>[/code] Et, enfin, là où tu as prévu de faire afficher le message de confrimation (mais, en tout état de cause, apres les différentes vérification, éventuellement dans la partie vraie du test sur if($erreur==""), on envoi le mail et on affiche le message [code] if (mail($destinataire,$objet,stripslashes($body),$headers,"-f $email")) { echo "<div class='story'>El mensaje siguiente se nos transmitió bien, y les agradecemos. Le contestaremos lo más rápido posible. Hasta pronto"; } else { echo "<div class='story'>ERROR, ERROR, el mensaje no has ido transmitido"; }[/code] [TIP] une indentation tres minutieuse du code te permettra de t'y retrouver beaucoup plus facilement si tu dois te relire dans quelques mois… Essaie de prendre de bonnes habitudes d'indentation (par exemple, le fait de mettre les accolade à la ligne et en dessous de la premiere lettre de l'instruction dont elle dépendent), cela facilitera énormément la relecture S'il n'y a pas d'accolade, il n'y a que la première instruction qui suit le test (ou le else) qui est prise en compte pour le test (ou le else)… la seule indentation peut suffir s'il n'y a qu'une instruction à effetuer, sans pour autant nuire à la relecture [clindoeil][/TIP]
rosefleur
 Posté le 12/10/2006 à 13:11 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne
Bonjour Koala01, Wao, tu t'es vraiement donné à fond pour me répondre, t'as dû passer des heures ! Je te remercie beaucoup pour ton aide dans l'amélioration de mon script. Mais j'ai pas besoin que ça soit très complexe pour ce type de formulaire. je pensais utiliser la fonction isset ou emply pour vérifier mes variables. Pour ce qui est de l'affichage j'ai résolu le problème, j'ai mis tout le code dans le body là où je voulais qu'il apparaisse et ça fontionne. Mais en tout cas je vais garder ton message en mémoire et l'éplucher plus tard car je voudrais comprendre toutes les astuces que tu cites, la partie qui concerne l'email m'intéresse. Encore merci, @+[smile]
koala01
 Posté le 13/10/2006 à 05:40 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
A vrai dire, isset n'a qu'une utilité relativement restreinte: savoir si une variable existe ou non (est déclarée)… La seule utilité de isset, c'est pour vérifier, par exemple, si le bouton d'envoi du formulaire a été enfoncé (if(isset($_POST/$_GET['Envoyer']))), et donc déterminer s'il est sensé de vérifier la valeur des champs du formulaire [clindoeil] ou déterminer s'il faut déclarer une variable avec une valeur par défaut car elle n'aurait pas encore été déclarée… isempty, n'est réellement utilisable que dans le cadre d'une chaine (chaine vide)… et renverra normalement faux dans le cas où l'on testerait le champs d'un formulaire dans lequel le visiteur aurait placé un (ou plusieurs) espaces… Or, le fait d'avoir trois espaces d'affilée ne nous intéresse pas forcément… C'est la raison de l'utilisation de trim, qui supprime les espaces surnuméraires (si le visiteur a introduit deux espaces, avec trim($_GET/$_POST['nom_du_champs']), la valeur de la variable récupérée est une chaine vide [clindoeil]) De la meme manière, le fait d'avoir une adresse E-mail du genre "jetaieucarcenestpasuneadressevalide" n'est clairement pas intéressant pour toi, et il s'agit donc de vérifier, à défaut qu'elle existe, qu'au moins l'adresse soit "valide" (et j'ai indiqué comment le vérifier) Le code fournis fonctionne normalement très bien et les commentaires devraient te permettre de comprendre le principe utilisé… S'il est loin d'apporter une solution définitive à certains problèmes (la possiblité que l'adresse E-mail, bien que valide, n'existe pas, par exemple) il est malgré tout en mesure de faire une vérification efficace du formulaire envoyé… Et, comme il vaut presque mieux pas de vérification du tout qu'une vérification "à moitié faite"… Ceci dit, non, ce message ne m'a pas pris des heures pour l'écrire… Grace à l'habitude, il a plutot été écrit "entre la poire et le fromage"… Mais seule une pratique assidue permet d'accéder à ce genre d'habitude [clindoeil]
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
99,99 €Ecran 24 pouces Viewsonic VA2418 (FullHD, IPS, 75 Hz) à 99,99 €
Valable jusqu'au 17 Avril

Darty fait une promotion sur l'écran 24 pouces VA2418-sh qui passe à 99,99 €. On le trouve ailleurs à partir de 120 €. Cet écran dispose d'une dalle FullHD IPS 5ms à 75 Hz, un filtre lumière bleue, de la technologie anti scintillement Flicker Free et intègre des ports VGA et HDMI.


> Voir l'offre
198,02 €Disque dur externe Western Digital Elements Desktop USB 3.0 12 To à 198,02 € livré
Valable jusqu'au 17 Avril

Amazon Allemagne propose actuellement le disque dur externe Western Digital Elements Desktop USB 3.0 12 To à 191,59 € (avec la TVA ajustée). Comptez 6,43 € pour la livraison en France soit un total de 198,02 € livré. On le trouve ailleurs à partir de 250 €. Ce disque dur dispose d'un grande capacité de stockage (12 To) et d'une connectique USB 3.0 qui vous offrira des transferts rapides. Il est compatible USB 2.0. A l'intérieur, vous trouverez un disque à hélium UltraStar DC HC 520 White (12 To, 5400 tr/min, 256 Mo cache, CMR -> source satdream.tech). Le disque peut être démonté et réutilisé dans un ordinateur, un NAS, etc. Une très bonne affaire

Vous pouvez utiliser votre compte Amazon France sur Amazon Allemagne et il n'y a pas de douane.


> Voir l'offre
99,99 €Mario Kart Live: Home Circuit à 99,99 €
Valable jusqu'au 17 Avril

Amazon propose actuellement Mario Kart Live: Home Circuit avec le kart Luigi pour Nintendo Switch à 99,99 € au lieu de 109 €. Laissez libre cours à votre imagination et créez vos propres courses dans le monde réel. Imaginez votre salle à manger se transformer en un monde de lave où bananes et carapaces s’échangeraient au rythme des rugissements des moteurs de votre kart, lui aussi réel… les possibilités sont infinies !


> Voir l'offre

Sujets relatifs
formulaire contact
Insérer un formulaire dans page " Contact"
Formulaire de contact html/php
Formulaire de contact
Formulaire de Contact - Referencement
où placer le formulaire de contact dans DW 8
Formulaire de contact e-mail
Formulaire contact PHP
Formulaire Contact PHP : E-mail vide ou presque...
champs caché destinataire formulaire contact php
Formulaire de contact
Plus de sujets relatifs à Formulaire de contact
 > Tous les forums > Forum Forum des Webmasters