> Tous les forums > Forum des Webmasters
 problème avec script vérification formulaire
Ajouter un message à la discussion
Pages : [1] 2 ... Fin
Page 1 sur 2 [Fin]
Mimie
  Posté le 12/05/2006 @ 12:09 
Aller en bas de la page 
Astucienne
Salut tout le monde, Sur mon site j'ai mis en place un formulaire afin de pouvoir faire des échanges de bannières. Voici le lien direct : [url]http://blue.butterfly.41.free.fr/bannieres.php[/url] Le problème c'est que même si tous les champs ne sont pas remplis le formulaire peut être envoyé. J'ai cherché des scripts pour vérifier, j'en ai trouvé un qui vérifiais bien, il faisait la synthèse des informations entrées mais ensuite impossible d'envoyer le formulaire, ça revenait toujours à la page "vérifiée". En auriez-vous un de bien ? Merci d'avance pour vos réponse et bonne journée [hello]

Modifié par Mimie le 12/05/2006 18:30
Publicité
Mimie
 Posté le 17/05/2006 à 08:25 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucienne
up
kate
 Posté le 17/05/2006 à 10:29 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne
re bonjour, voici un script php que j'utilise et qui fonctionne très bien, et très facile à utiliser : [url]http://www.easy-script.com/script.php?&debut=6&c=php&sc=form&ord=click[/url] c'est le 10 - Assistant formulaire php une démo [url="http://www.f1-fantasy.net/_dev/assistant_formulaire/Fr/assistant-formulaire1.php"]ici[/url]
Mimie
 Posté le 17/05/2006 à 10:32 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucienne
Salut Kate, Merci pour ta réponse. Je sais pas si ça vient de moi mais je ne peux pas accèder au site. En tous cas, merci, je retesterais régulièrement. Bonne journée [hello]
Mimie
 Posté le 17/05/2006 à 12:06 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucienne
Re salut Kate, Je viens de télécharger le formulaire. L'as-tu intégré dans une page personnelle ? Moi lorsque je met en ligne l'original il apparaît sans problème mais lorsque je l'intègre à ma page, plus rien. Par ailleurs sur le formulaire original lorsque je clique sur envoyer rien ne se passe, j'ai regardé sur le bouton envoyer il y a un lien vers la même page, c'est pas vraiment normal non ? @ +
kate
 Posté le 17/05/2006 à 12:46 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne
je t'ai envoyé un message privé! pour le lien
Mimie
 Posté le 17/05/2006 à 13:02 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucienne
Vi j'ai vu merci [hello]
Mimie
 Posté le 18/05/2006 à 10:14 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucienne
up
koala01
 Posté le 18/05/2006 à 20:06 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Salut, D'abord, pour te rassurer, il n'est pas forcément anormal que l'attribut action de ton formulaire (ou tout autre lien qui aurait le meme effet que le bouton) pointe sur… la page qui est responsable de son affichage… La valeur de cet atribut peut d'ailleurs tres bien etre vide(action=""), et renverra alors… sur l'url affichée dans la barre d'adresse du navigateur [clindoeil] Pour qu'une telle page fonctionne, il suffit de vérifier par script si le bouton d'envoi a été utilisé ou non… Un code ressemblant à ceci (avec un bouton type submit nommé Submit)
<? if(isset($_POST[Submit])) //ou if(isset($_GET[Submit])) selon la méthode utilisée { //ici le bouton a ete utilise, il faut traiter } else { //ici le bouton n'a pas ete utilise, il faut afficher le formulaire }
s'occupera sans aucun problème de la gestion de l'affichage (ou non) du formulaire et de la gestion (ou non) des valeurs des champs du formulaire [clindoeil] Pour en revenir à ton problème de vérification (ce qui doit etre donc mis à la place du "//ici, le bouton a ete utilise, il faut traiter"), le principe est relativement simple… Selon la méthode utilisée pour l'envoi du formulaire (method="get" ou methode="post"), php permet de récupérer les valeurs des champs à l'aide de variables globales $_GET[un_nom_de_champs] et $_POST[un_nom_de_champs], où, je présumes que tu t'en sera douté, un_nom_de_champs représente la valeur mise dans les attrbuts name et id des champs de ton formulaire… PHP dispose aussi de fonctions qui permettent de retirer les espaces surnuméraires avant, apres ou avant et apres les caractères significatifs (si quelqu'un essaie de mettre simplement trois espaces, cette fonction permettra de n'avoir qu'une chaine vide) Pour retirer les espaces surnuméraires de début de chaine, la fonction à utiliser est $resultat=ltrim($variable), pour retirer les espaces surnuméraires en fin de chaine, la fonction à utiliser est $resultat=rtrim($variable), et, enfin, pour supprimer les espaces surnuméraire en début et en fait de chaine, la fonction à utiliser est $resultat=trim($variable). Pour un formulaire classique (nom, prenom, adresse E-mail) on peut très bien commencer par recupérer les valeurs des differents champs dans des variables, en suprimant ces fameux espaces surnumeraires sous la forme de
<? $Nom=trim($_GET[nom]); $Premom=trim($_GET[prenom]); $Email=trim($_GET[email]); ?>
La vérification "de base" consistera à dire que si nom ou prenom ou email est vide, on n'est pas content(attention, il s'agit ici d'un ou inclusif: si deux ou trois son vides, cela fonctionnera aussi) Pour vérifier si une chaine est vide, on vérifie "tout simplement" si elle vaut "" … Le test peut donc prendre une forme ressemblant à
<? if ($Nom=="" || $Prenom=="" || $Email=="") { //ici, au moins un des champs était vide, on n'est pas content //il faut le faire savoir au visiteur } else { //ici tous les champs étaient remplis, on est content [bigsmile] }
Une autre solution de test, c'est de le faire moins "à l'emporte piece" et de créer une variable qui gardera les erreurs commises sous la forme de
<? $toutbon=true; //on crée une variable temporaire nommee tout bon qui sera de type booléen (vrai/faux) //et initialisée, à la base à true (qui veut dire vrai en Anglais) $erreur=""; //on cree uen deuxieme variable temporaire, nommee erreur // qui est dans un premier temps vide if($Nom=="") //si le nom est vide { $erreur="Veuillez introduire votre nom"; $toutbon=false; } if($Prenom=="")// si le prénom est vide { //il y a peut etre deja quelque chose dans erreur… //si c'est le cas, il faut passer à la ligne if($erreur!="") $erreur.="<br>" $erreur.="Veuillez introduire votre prenom"; $toutbon=false; } if($Email=="")//si l'adresse E-mail est vide { //il y a peut etre deja quelque chose dans erreur… //si c'est le cas, il faut passer à la ligne if($erreur!="") $erreur.="<br>" $erreur.="Veuillez introduire votre adresse E-mail"; $toutbon=false; } else { //mais si l'adresse E-mail n'est pas vide, il faut vérifier si elle est potentiellement valide //la validité (potentielle) d'une adresse E-mail se fait en vérifiant que /*
  1. Il y ait une arobase '@' dans le lot, mais qui ne soit pas en première lettre
  2. il y ait un point '.' Apres l'arobase, mais ni tout de suite après, ni en dernière position
*/ //les expression régulières nous viennent à notre secours…
if(!ereg ("^[^@ ]+@[^@ ]+\.[^@ \.]+$", $Email)) { //il y a peut etre deja quelque chose dans erreur… /si c'est le cas, il faut passer à la ligne if($erreur!="") $erreur.="<br>" $erreur.="L'adresse E-mail introduite n'est pas valide"; $toutbon=false; } } //il ne reste plus qu'à vérifier si la variable $toutbon est toujours égale à true… //si c'est le cas, le formulaire a été vérifié avec succes //sinon, on n'est pas content if($toutbon)//ca marche aussi comme cela pour les variable booléennes { //tout est ok… on est content } else { //tout n'est pas ok… on affiche l'erreur echo $erreur; //mais il y a surement quelque chose à faire en plus [/red][/i][clindoeil] }
Ce qui est en italique et en rouge ne sont que des commentaires pour te permettre de comprendre ce que l'on fait, et peuvent allègrement etre supprimés [clindoeil] Avec l'ensemble des explications et des commentaires, tu devrais etre en mesure d'adapter le tout à ton formulaire à toi (il y a peut etre des champs en plus ou qui ont d'autres noms [clindoeil][langue]) La seule chose qui manque, c'est de savoir ce qu'il faut faire une fois que tous les champs ont été vérifiés… Cela peut aller de l'introduction de ceux-ci dans une base de donnée à l'envoi de ceux-ci par mail à quelqu'un(e), voire à plusieurs personnes… J'attendrai donc de savoir ce que tu veux faire pour aller plus loin [clindoeil]
Publicité
Mimie
 Posté le 19/05/2006 à 20:55 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucienne
Salut tout le monde, Merci infiniment Koala pour ta réponse. Désolée de ne pas avoir pu répondre plus tôt. Merci pour toutes ces explications très claires, je vais tester tout ça demain. Au niveau des champs, la seule chose à rajouter serait un espace pour que la personne puisse laisser un message. En ce qui concerne les informations, je voudrais qu'elles me soient transmises par e-mail. Merci encore pour ta réponse et bonne soirée [hello]
koala01
 Posté le 19/05/2006 à 21:45 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Ohhh, bien c'est bien simple… S'il s'agit d'un formulaire de contact, tu rajoute donc bien forcément un champs "zone texte" (textarea) avec le message, tu le teste comme tous les autres (les commandes *trim ne surppriment pas les espaces entre deux mots) Ensuite, si ton hébergeur présente le support de la fonction mail(), il te suffit d'un petit script sympa du genre de (apres vérification complete du formulaire, et s'etre assuré qu'il faut l'envoyer, cela va de soi)
<? $a_envoyer="<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"> <html> <head> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"> < </head> <body> <p>$nom $prenom a pris contact avec toi</p> <p>le message etait</p> <blockquote>$message</blockquote> <p> la reponse est à renvoyer à <a href=\"mailto:$Email\">$Email</a> </body> </html>"; //Comme tu peux le constater, ca ressemble énormément à du HTML… peut etre parce que c'en est [clindoeil] //on va définir quelques entetes pour l'envoi du mail //qui on pour but de permetre l'envoi de mail sous forme de HTML $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' ."\r\n"; //"yapluka" envoyer le mail… c'est la fonction mail(adresse,sujet,message,entete) qui s'en occupe mail("toi@hebergeur.com","contact sur le site",$a_envoyer,$headers); ?>
Evidemment, je me suis basé sur le fait que tu avais récupéré le message dans la variable $message, tu t'en serais doutée, je présumes

Modifié par koala01 le 19/05/2006 21:46
Mimie
 Posté le 20/05/2006 à 08:27 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucienne
Salut Koala, Je te remercie pour ta réponse. Je vais essayer ça tout de suite. Merci encore et bon week-end [hello]
Mimie
 Posté le 20/05/2006 à 09:32 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucienne
Re salut Koala, Je viens de regarder plus en détail tous tes précieux conseils et je te remercie une nouvelle fois pour ton aide. Par contre, excuse-moi si mes questions sont couillonnes mais je débute en PHP et j'ai énormément a apprendre. Quelle est la différence entre la méthode GET et POST ? Si j'utilise la méthode POST sera-t-il possible de mettre le code ci-dessous ? [code] <? $Nom=trim($_GET[nom]); $Premom=trim($_GET[prenom]); $Email=trim($_GET[email]); ?>[/code] Selon la réponse, ça change pas mal de choses. Cette partie : [code] <? if(isset($_POST[Submit])) //ou if(isset($_GET[Submit])) selon la méthode utilisée { //ici le bouton a ete utilise, il faut traiter } else { //ici le bouton n'a pas ete utilise, il faut afficher le formulaire }[/code] doit-elle être mise au début de la page en complément de la partie ci-dessous ? Pour le script en lui-même, j'ai pris la partie ci-dessous, j'ai enlevé ce qui été en rouge et en italique et j'ai rajouté les champs dont j'ai besoin. [code]<? $toutbon=true; //on crée une variable temporaire nommee tout bon qui sera de type booléen (vrai/faux) //et initialisée, à la base à true (qui veut dire vrai en Anglais) $erreur=""; //on cree uen deuxieme variable temporaire, nommee erreur // qui est dans un premier temps vide if($Nom=="") //si le nom est vide { $erreur="Veuillez introduire votre nom"; $toutbon=false; } if($Prenom=="")// si le prénom est vide { //il y a peut etre deja quelque chose dans erreur#8230; //si c'est le cas, il faut passer à la ligne if($erreur!="") $erreur.="<br>" $erreur.="Veuillez introduire votre prenom"; $toutbon=false; } if($Email=="")//si l'adresse E-mail est vide { //il y a peut etre deja quelque chose dans erreur#8230; //si c'est le cas, il faut passer à la ligne if($erreur!="") $erreur.="<br>" $erreur.="Veuillez introduire votre adresse E-mail"; $toutbon=false; } else { //mais si l'adresse E-mail n'est pas vide, il faut vérifier si elle est potentiellement valide //la validité (potentielle) d'une adresse E-mail se fait en vérifiant que /* Il y ait une arobase '@' dans le lot, mais qui ne soit pas en première lettre il y ait un point '.' Apres l'arobase, mais ni tout de suite après, ni en dernière position */ //les expression régulières nous viennent à notre secours#8230; if(!ereg ("^[^@ ]+@[^@ ]+\.[^@ \.]+$", $Email)) { //il y a peut etre deja quelque chose dans erreur#8230; /si c'est le cas, il faut passer à la ligne if($erreur!="") $erreur.="<br>" $erreur.="L'adresse E-mail introduite n'est pas valide"; $toutbon=false; } } //il ne reste plus qu'à vérifier si la variable $toutbon est toujours égale à true#8230; //si c'est le cas, le formulaire a été vérifié avec succes //sinon, on n'est pas content if($toutbon)//ca marche aussi comme cela pour les variable booléennes { //tout est ok#8230; on est content } else { //tout n'est pas ok#8230; on affiche l'erreur echo $erreur; //mais il y a surement quelque chose à faire en plus [/red][/i] }[/code] Pour l'envoi de l'e-mail : [code]$a_envoyer="<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">[/code] - Faut il laisser ce qui se trouve entre "" ou faut-il le remplacer ? [code]mail("toi@hebergeur.com","contact sur le site",$a_envoyer,$headers);[/code] - Puis-je mettre mon adresse de façon cryptée ou suis-je obligée de la mettre en clair ? (Je ne voudrais pas que mon adresse soit aspirée puis utilisée par des spammeurs, pour le moment en prenant quelques précautions je n'ai jamais eu de soucis) - Sous quel nom doit être enregistré ce fichier ? Merci infiniment pour ton aide. Bon week-end [hello]

Modifié par Mimie le 22/05/2006 07:56
Tasgarth
 Posté le 20/05/2006 à 11:32 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour Mimie,
Quelle est la différence entre la méthode GET et POST ?
Un petit retour en arrière: Que se passe-t'il quand le 'client' (utilisateur, celui qui remplit le formulaire) clique sur le bouton 'envoi' (submit) ? Un requête HTTP est envoyé au serveur à destination du fichier (script) visé par attribut action. La requête contient tous les renseignements (associations) utiles.... 1° Si POST : cela se trouve dans l'en-tête HTTP envoyé au serveur. 2° Si GET: cela se trouve dans l'URL. C'est ce que l'on voit dans le http affiché par le navigateur avec des signes '?type='..... Le traitement final (sur le serveur) à effectuer dépendra ... de 'GET' ou 'POST' utilisé.
je débute en PHP et j' ai énormément a apprendre.
Il faut un début à tout...mais il vaut mieux apprendre à partir d'un tutoriel (sur le web et gratuit [smile]) que l'on suit depuis le début, et le plus longtemps possible,[boom] et, avoir un bouquin de référence (simple) avec des exos (simples). C'est peut-être 'scolaire' mais cela est à mon avis plus efficace dans le temps, malheureusement solution financiaire.... Dans tous les cas il vaut mieux commencer par ... le début, avec un crayon et du papier , que le clavier[crazy]... Un forum ne peut donner qu' une réponse ponctuelle à une question courte et ciblée. C'est simplement mon avis...

Modifié par Tasgarth le 20/05/2006 13:23
koala01
 Posté le 20/05/2006 à 15:59 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
En fait, quand tu envoi un formulaire avec la method="get", les valeurs introduites dans les différents champs sont envoyés par l'url, ce qui crée quelque chose du genre de http://toi.hebergeur.com/tapage.php?champs1="reponse"&champs2="reponse" &champs3="reponse" (et qui est, accessoirement, limitée à 255 caractères) alors que quand tu utilise la method="post" pour le formulaire, les valeurs des différent champs est envoyé sous forme d'entetes HTTP(et qui ne souffre d'aucune limitation). Evidemment $_GET[nom du champ] ne peut etre utilisé que quand le formulaire a été envoyé avec la methode à get et $_POST[nom du champs] ne peut etre utilisé que quand le formulaire a été envoyé avec la methode à post… Donc, chaque fois que tu vois un $_GET[quelque_chose], et, pour autant que tu n'aie pas passé d'argument dans ton url, si c'est pour récupérer le valeurs d'un formulaire envoyé par la methode post, il faudra le changer en $_POST… ($_GET[quelque_chose] permet en fait de récupérer n'importe quelle variable envoyée par paramètre, y compris les parametres qui seraient fournis sous la forme d'un simple lien du genre <a href="unepage.php?variable=valeur">un lien ici</a>) ce qui est entre les "" de a_envoyer peut très bien etre modifé, mais il faut juste faire attention au fait que si tu veux utiliser des "" qui doivent etre inclus dedans tu dois les échaper avec un \… Ainsi si tu veux un truc du genre de
et je lui dit "bonjour, vous allez mourrir de rire"
cela devient
$a_envoyer="et je lui dit \"bonjour, vous allez mourrir de rire\" ";
Tu peux très bien décider d'inclure ta propre CSS externe dans le code en n'ommettant pas, dans ce cas là, de mettre son url absolue… Voici le code que j'utilise pour créer un message sur un de mes site, pour te faire comprendre [code]<html> <head> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"> <link href=\"http://koala01.free.fr/css/style.css\" rel=\"stylesheet\" type=\"text/css\" media=\"screen\"> </head> <body> <div id=\"site\"><p>$nom écrit le message suivant sur le livre d'or</p> <p> <blockquote>$commentaire</blockquote> </p> <p> la réponse sera à renvoyer à $email</p></div> </body></html>";[/code] Il n'est absolument pas nécessaire de crypter ton adresse Email d'aucune manière car elle n'est pas affichée sur la page que peut renvoyer le script (du moins, si tu ne le demande pas)… En effet, php est ce que l'on appelle un langage serveur… Cela signifie que toutes les instructions qu'on lui donne sont gérées directement chez l'hégergeur avant que seul le résultat ne soit envoyé au visiteur… Le but est simplement de lui dire "dans tel cas, tu fais ceci et dans tel autre cas tu fais cela" [clindoeil] Comme le visiteur n'a meme pas conscience du fait que le serveur a envoyé un mail à ton adresse, tu ne risque aucun spam… Enfin, tu enregistre le fichier sous le nom que tu veux (qui doit, juste correspondre au lien qui sera donné pour accéder au formulaire) avec la seul contrainte que l'extension du fichier doit etre du *.php au lieu de *.htm/*.html/*.xhtml … Pour la toute première question (tu m'auras une fois de plus fait écrire un message à rallonges et à charnières [langue], mais comme j'aime etre compréhensible… c'est toi qui te farcis toute la lecture [bigsmile]) tout dois être imbriqué dans le sens normal et logique de la lecture… Il ne sert à rien de tester une variable si tu n'est pas sur de l'avoir récupérée, tout comme il est sensé de prévoir que quelque chose qui doit etre affiché par le navigateur du client se trouve dans la balise <body> du résultat qui lui est envoyé… A moins bien sur que tu ne veuille insérer des balises d'entete (inclusion d'une feuille de style externe, par exemple) auquel cas, cet affichage là devrait se trouver dans la balise <head> [langue] Pour le reste, il y a de nombreuses solutions, en voici quelques une… Si on veut modifier la balise <title> de la page en fonction du moment et de la validation, on pourrait très bien faire un truc du genre de [code] <? //n'oublie pas de remplacer $_POST par $_GET en fonciton //de la méthode utilisée pour envoyer le formulaire if(isset($_POST[submit])) { //on va utiliser une nouvelle variable pour gérer la balise <title> //on prévois un titre pour la prise en compte $titre="Prise en comte de votre commentaire"; //on récupère les différents champs $Nom=trim($_POST[nom]); $Prenom=trim($_POST[prenom]); $Email=trim($_POST[email]); $Commentaire=trim($_POST[commentaire]); //on vérifie le tout pour s'assurer que c'est correct $toutbon=true; $erreur==""; if($Nom=="") { $erreur="Veuillez introduire votre nom"; $toutbon=false; } if($Prenom=="") { if($erreur!="") $erreur.="<br/>"; $erreur.="Veuillez introduire votre prenom"; $toutbon=false; } if($Email=="") { if($erreur!="") $erreur.="<br/>"; $erreur.="Veuillez introduire votre adresse Email"; $toutbon=false; } else { if(!ereg ("^[^@ ]+@[^@ ]+\.[^@ \.]+$", $Email)) { if($erreur!="") $erreur.="<br>" $erreur.="L'adresse E-mail introduite n'est pas valide"; $toutbon=false; } } if ($Commentaire=="") { if($erreur!="") $erreur.="<br/>"; $erreur.="un commentaire vide n'a pas beaucoup d'intéret<br/>"; $toutbon=false; } //si une erreur s'est produite, on modifie un peu le titre de la page if(!$toutbon)//ca correspond à "si toutbon vaut false" $titre.="==>ECHEC de la validation<=="; } else { //un titre sympa pour inciter les gens à mettre leur commentaire $titre="Envoyer un commentaire à l'adorable mimie"; } //A partir d'ici, on quitte le php (mais on y reviendra de temps en temps) pour passer en HTML pur ?> <html> <head> <title> <? echo $titre;//tiens, du PHP ;-) ?></title> <!-- tu peux rajouter tout ce que tu veux comme entete, bien évidemment --> </head> <body> <!-- tu rajoutes tout ce que tu veux autour, ce n'est que du HTML ;-) mais on va surtout s'intéresser au PHP ;-)--> <? if(!isset($_POST[Submit])//ici, la personne n'a pas encore envoyé le formulaire...il faut le faire afficher { include('form.php');//on inclus un fichier qui ne s'occupe que du formulaire // pour ne pas avoir à le réécrire 10 fois j'en donnerai le code plus tard } else { if($toutbon) //tout est OK, il faut t'envoyer le mail { //et prévenir le visiteur (c'est plus sympa) $a_envoyer="<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"> <html> <head> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"> </head> <body> <p>$nom $prenom a pris contact avec toi</p> <p>le message etait</p> <blockquote>$message</blockquote> <p> la reponse est à renvoyer à <a href=\"mailto:$Email\">$Email</a> </body> </html>"; $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' ."\r\n"; mail("toi@hebergeur.com","contact sur le site",$a_envoyer,$headers); //on peut quitter le PHP quand on veut pour repasser en HTML pur ?> <p> Votre commentaire a bien été pris en compte et un mail a été envoyé au webmaster qui y prêtera toute l'attention qu'il mérite</p> } else //aieaieaie... y avait une erreur; { ?> <p>une erreur est survenue lors de la vérification du formulaire</p> <? include('form.php'); } }?> <!--si tu veux quelque chose en dessous du formulaire, c'est ici que ca se place (en HTML pur si tu le veux)--> </body> </html> [/code] Voici donc le "code type", que tu peux modifier à ta guise, d'une page "ALL-IN-ONE" qui gère l'affichage, la vérification et l'envoi d'un formulaire… N'oublies simplement pas quand tu la modifies que ce qui est entre <? et ?> est du PHP et que c'est ce qui sera géré par le serveur… Cette page serait avantageusement nommée "contact.php" (par exemple) et le lien qui permet d'y parvenir sera simplement du genre de <a href="contact.php">contacter le webmaster</a> Il ne reste plus qu'à écrire un code juste pour le formulaire… Comme il sera inséré dans une page qui a déjà tout ce qu'il faut (<html><head>...</head><body>...</body></html>) ce n'est vraiment que le formulaire en lui meme (de <form> à </form>) Voici le code (à enregistrer, pour que le serveur le trouve, sous le nom de "form.php" (nom donné dans les include)) dans lequel il faudra juste veiller à ce que les noms des différents champs correspondent à ceux utilisés lors des $variable=$_POST[quelquechose] Pour le reste, tu l'adapte à ta convenance [clindoeil] [code] <form method="post"> <? //il y avait peut etre une erreur… affichons la en rouge si c'est le cas) if($erreur!="") echo "<font color=\"#FF0000\">$erreur</font>"; ?> <p>Votre nom:<input type="text" id="nom" name="nom" value="<? //une petite astuce pour que l'utilisateur ne doive pas tout reremplire en ca d'erreur echo Nom;?>"></p> <p>Votre Prénom:<input type="texte" id="prenom" name="prenom" value="<? echo $Prenom;?>"></p> <p>Votre E-mail: <input typ="texte" id="email" name="email" value="<? echo $Email;?>"></p> <p> votre commentaire: <textarea id="commentaire" name="commentaire"><? echo $Commentaire;?></textarea></p> <p><input type="submit" id="Submit" name="Submit" value="Envoyer"> <input type="reset" name="reactu" id="reactu" value="Réinitialiser"></p> </form> [/code] Et le tour sera entièrement joué [clindoeil]
Mimie
 Posté le 20/05/2006 à 16:23 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucienne
Salut tout le monde, Tasgarth, merci beaucoup pour ta réponse. Je sais bien que ce forum n'est pas l'endroit idéal pour apprendre et qu'il y a d'autres sites plus appropriés, je vais m'y intéresser de plus près sous peu mais seule, ça m'aurait demandé pas mal de temps et le problème c'est que je reçois régulièrement des messages vides ce qui n'est franchement pas l'idéal car j'ai toujours peur que le forumlaire ai mal fonctionné et qu'une personne reste sans réponse. Koala, merci infiniment pour cette réponse très détaillée, désolée d'avoir du te faire répéter. Je vais m'occuper du formulaire dès demain. L'avantage c'est que maintenant quand je vais aller visiter les sites consacrés au php je pourrais pleinement profiter de ce qui est noté sans avoir une recherche en particulier qui me traverse l'esprit. Merci infiniment pour ton aide. Bon week-end [hello]

Modifié par Mimie le 20/05/2006 16:24
Mimie
 Posté le 21/05/2006 à 09:31 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucienne
Salut tout le monde, Je viens de mettre une page en ligne pour faire des tests http://blue.butterfly.41.free.fr/test/bannieres.php Mais il y a quelques petites choses bizarres : - tout d'abord dans la case prévue pour mettre l'adresse du site il y a écrit "url" alors que les autres cases sont bien vides - ensuite lorsque je saisi mon nom et que je valide pour envoyer le fomulaire je reviens sur la page mais mon nom ne réapparaît pas. Ensuite j'ai beau avoir lu lu et relu j'ai pas vu à quel endroit il fallait faire le lien vers la page de vérification. Tout comme pour le code [code]<html> <head> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"> </head> <body> <div id=\"site\"><p>$prenom souhaite faire un échange de bannières. Voici son message :</p> <p> <blockquote>$message</blockquote> </p> <p> La réponse sera à renvoyer à $email</p></div> </body> </html>[/code] je n'ai pas vu à quel endroit il faut mettre un lien vers ce fichier. Ca fait plus de 2 heures que j'y suis, peut être que les réponses sont sous mes yeux, mais je ne les ai pas encore posés dessus. Merci encore pour ton aide. Bonne journée [hello]

Modifié par Mimie le 21/05/2006 09:37
Publicité
koala01
 Posté le 21/05/2006 à 12:51 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Je viens de me rendre compte que j'ai fait deux petites fautes de frappe qui font toute la différence [rougir][langue]… A la troisième ligne du fichier du script
if(isset($_POST[submit]))
(le premier test du genre qui apparait) doit etre modifié en
if(isset($_POST[Submit]))
(avec une majuscule à Submit) Et, dans le fichier du formulaire, la ligne qui concerne le nom [code]<p>Votre nom:<input type="text" id="nom" name="nom" value="<? //une petite astuce pour que l'utilisateur ne doive pas tout reremplire en ca d'erreur echo Nom;?>"></p>[/code] doit etre modifiée en [code] <p>Votre nom:<input type="text" id="nom" name="nom" value="<? //une petite astuce pour que l'utilisateur ne doive pas tout reremplire en ca d'erreur echo $Nom;?>"></p> [/code] avec un caractère $ devant Nom; ?> Ces deux erreurs arrangées, si tu as enregistré le script (que tu a modifié) sous le nom de bannieres.php, et le formulaire sous form.php, cela devrait fonctionner correctement…
Malcolm
 Posté le 21/05/2006 à 13:32 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

juste une Q? pour koala : tu fais le test après un trim pour le remplssage de tes valeurs ... j'ai vu que tu comparais $valeur à "" (chaine vide), y a-t-il sémantiquement parlant une différeence entre if ($variable = "") et if(empty($variable)) ?
Mimie
 Posté le 21/05/2006 à 13:38 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucienne
Salut Koala, Je te remercie pour ta réponse, je suis rassurée de savoir qu'il y avait un petit soucis. Pour le formulaire je n'ai pas eu a rectifier car j'avais supprimé la ligne concernant le nom. Le formulaire est bien enregistré sous le nom de form.php. Dans ma page bannieres.php j'ai mis : [code]<?php include 'form.php'; ?>[/code] de façon a insérer le formulaire à l'endroit souhaité. Par contre pour le script : [code]<? if(isset($_POST[Submit])) { $titre="Prise en comte de votre commentaire"; $Prenom=trim($_POST[prenom]); $Email=trim($_POST[email]); $url=trim($_POST[url]); $Message=trim($_POST[message]); //on vérifie le tout pour s'assurer que c'est correct $toutbon=true; $erreur==""; if($Prenom=="") { if($erreur!="") $erreur.="<br/>"; $erreur.="Veuillez saisir votre prénom ou pseudo s'il vous plaît."; $toutbon=false; } if($Email=="") { if($erreur!="") $erreur.="<br/>"; $erreur.="Veuillez saisir votre adresse E-mail s'il vous plaît."; $toutbon=false; } else { if(!ereg ("^[^@ ]+@[^@ ]+\.[^@ \.]+$", $Email)) { if($erreur!="") $erreur.="<br>" $erreur.="L'adresse E-mail saisie n'est pas valide."; $toutbon=false; } } if($url=="") { $erreur="Veuillez saisir l'adresse de votre site s'il vous plaît."; $toutbon=false; } if ($Message=="") { if($erreur!="") $erreur.="<br/>"; $erreur.="Veuillez saisir votre message s'il vous plaît.<br/>"; $toutbon=false; } if(!$toutbon) $titre.="==>ECHEC de la validation<=="; } else { $titre="Contacter Mimie (Blue Butterfly)"; } ?> <html> <head> <title> <? echo $titre; ?></title> </head> <body> <? if(!isset($_POST[Submit]) { include('form.php'); } else { if($toutbon) { $a_envoyer="<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"> <html> <head> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"> </head> <body> <p>$prenom souhaite faire un échange de bannières.</p> <p>Voici son message :</p> <blockquote>$message</blockquote> <p>La réponse est à renvoyer à <a href=\"mailto:$Email\">$Email</a> </body> </html>"; $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' ."\r\n"; mail("mon-email.com","Echange de bannières",$a_envoyer,$headers); ?> <p> Votre demande a bien été prise en compte et un e-mail vient d'être envoyé au webmaster qui y prêtera toute l'attention qu'il mérite.</p> } else { ?> <p>Une erreur est survenue lors de la vérification du formulaire</p> <? include('form.php'); } }?> </body> </html>[/code] J'ai collé les différentes parties dans <head></head> et <body>>/body> mais en faisant cela j'ai un message d'erreur : Parse error: syntax error, unexpected T_VARIABLE in /mnt/105/sdb/3/2/blue.butterfly.41/test/bannieres.php on line 49 Merci encore pour ton aide. Bonne journée [hello]
NoNoZeBeSt
 Posté le 21/05/2006 à 15:14 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
Salut à tous, je m'immisce juste dans la conversation pour le probleme que tu rencontré je pense qu'il faudrait mettre
if(!$toutbon) { $titre.="==>ECHEC de la validation<=="; }
ligne 49 @+
Mimie
 Posté le 21/05/2006 à 15:23 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucienne
Salut tout le monde, NoNoZeBeSt, je te remercie pour ta réponse. Je viens de vérifier j'ai l'impression que c'est déjà ce qui est inscrit. Bonne journée [hello]
NoNoZeBeSt
 Posté le 21/05/2006 à 15:36 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
En fait je crois qu'il manque les accolades { et } il est ecrit
if(!$toutbon) $titre.="==>ECHEC de la validation<==";
je pense que c'est ce qui pose problème, ce que
if(!$toutbon) { $titre.="==>ECHEC de la validation<=="; }
devrait résoudre
Malcolm
 Posté le 21/05/2006 à 15:44 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

non ... lorsque le if ne contient qu'une seule action si la condition est validée, les accolades ne sont pas obligatoires. (mais si elles sont absentes lorsque plusieurs actions sont prévues, seule la première sera considérée comme l'action du if)
NoNoZeBeSt
 Posté le 21/05/2006 à 15:51 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
merci pour le renseignement Malcolm je ne savais pas
Mimie
 Posté le 21/05/2006 à 16:01 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucienne
Salut tout le monde, Merci beaucoup NoNoZeBeSt et Malcolm pour vos réponses. Bonne journée [hello]
Publicité
Pages : [1] 2 ... Fin
Page 1 sur 2 [Fin]

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
12,12 €Clé USB 3.0 Sandisk Ultra 64 Go à 12,12 €
Valable jusqu'au 25 Juillet

Amazon propose la clé USB Sandisk Ultra d'une capacité de 64 Go qui passe à 12,12 €. Cette clé USB 3.0 est compatible USB 2.0 et offre de bons débits d'environ 100 Mo/s en lecture et en écriture. Le connecteur est rétractable pour éviter qu'il prenne la poussière.


> Voir l'offre
99,99 €NAS Synology DS120J à 99,99 €
Valable jusqu'au 25 Juillet

Amazon propose actuellement le NAS Synology DS120J à 99,99 €. Ce NAS à 1 baie va vous permettre de mettre en place un espace de stockage sécurisé sur votre réseau local et peut aussi faire office de serveur multimédia, DLNA, serveur web, client ftp, bittorent, ... On le trouve ailleurs à partir de 115 € . A l'intérieur, vous devrez glisser un disque dur au format 3.5 pouces.


> Voir l'offre
47,14 €Disque dur Seagate BarraCuda 2 To à 47,14 €
Valable jusqu'au 25 Juillet

Amazon propose actuellement le disque dur Seagate BarraCuda - 2 To (ST2000DM008) à 47,14 € livré gratuitement. On le trouve ailleurs autour de 69 €. Ce disque dur 3.5 pouces SATA III tourne à 7200tr/min et possède 64Mo de cache. 


> Voir l'offre

Sujets relatifs
problème avec un script php
Probleme formulaire avec php
Problème avec un formulaire d'envoi....
probleme avec mon formulaire
Problème script formulaire php
problème affichage d'un formulaire avec firefox
problème avec formulaire ( urgent)
Problème avec mon script.
problème formulaire par mail avec FREE
J'ai un problème avec un formulaire
Plus de sujets relatifs à problème avec script vérification formulaire
 > Tous les forums > Forum Forum des Webmasters