IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Difficulté avec formulaire PHP


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Difficulté avec formulaire PHP
    Bonjour,

    J'ai un formulaire simple sur mon site web sur lequel je veux que les visiteurs indiquent des commentaires. Les champs sont tous obligatoires.

    Le formulaire fonctionne bien, et le message de confirmation du fichier php3 fonctionne bien sauf

    1. Les champs vides sont envoyés quand même!!
    2. Et je reçois un courriel avec les entrées vides. ( exemple: Nom: Ville: etc...)


    Voici l'URL du formulaire

    http://www.educanin.com/commentairesphp.htm

    Voici le CODE HTML du Formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <form name="Commentaires" action="commentairesform.php3" method="post" enctype="text/plain" name="Commentaires">
    <input type="hidden" name="Titre du formulaire" value="COMMENTAIRES DE CLIENTS" />
    <font face="Tahoma"><div style="text-align: center"><b><font size="5" color="#0066cc">Élève ou ancien élève?</font></b></div></font><br>
    <font size="5" color="#ff0000"><b><i><blink><div style="text-align: center"><strong>ENVOYEZ NOUS VOS COMMENTAIRES !</strong></div></blink></i></b></font><br />
    <font face="Tahoma, Times New Roman, Verdana" size="3"><b><div style="text-align: center">Nous serons heureux de les ajouter ici</div></b></font><br />
    <div style="text-align: center">
    <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" summary="">
    <col width="40%">
    	<tr>
    		<td><b>Votre nom (ou prénom)</b></td>
    		<td><input type="text" name="Nom" size="40" maxlength="256" /></td>
    	</tr>
    	<tr>
    		<td><b>Votre ville</b></td>
    		<td><input type="text" name="Ville" size="40" maxlength="256" /></td>
    	</tr>
    	<tr>
    		<td><b>Nom du chien</b></td>
    		<td><input type="text" name="Nom_du_chien" size="40" maxlength="256" /></td>
    	</tr>
    	<tr>
    		<td><b>Votre courriel<font color="#FF0000">*</font></b></td>
    		<td><input type="text" name="Courriel" size="40" maxlength="256" /></td>
    	</tr>
    </table>
    </div><div style="text-align: center"><b><font color="#FF0000">*</font>Pour vous répondre</b></div><br />
    <table width="500" border="0" align="center" cellpadding="0" cellspacing="0" summary="">
    	<tr>
    		<td width="250"><div style="text-align: center"><img src="images/chiot_ecrit.gif" border="0" width="50" height="73"  /></div></td>
    		<td width="250"><div style="text-align: center"><img src="images/emailput.gif" border="0" width="107" height="35"  /></div></td>
    	</tr>
    </table><br />
    <b><font size="4"><div style="text-align: center">VOS COMMENTAIRES</div></font></b><br />
    <div style="text-align: center"><textarea name="Commentaires" cols="50" rows="10">
     
    </textarea></div><br />
    <div style="text-align: center"><input type="submit" value="ENVOYER" />
    <input type="reset" value="EFFACER" /></div>
     
    </form><?xml version="1.0" encoding="windows-1252"?>
    et voici le CODE PHP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    <?php /* Date de création: 2006-09-14 */ ?>
    <html>
    <body>
    <?php
     
    //Trouvé sur http://www.toulouse-renaissance.net/c_outils/
     
    // DEBUT Fonction de contrôle du mail PHP-UNIX
    function check_mail($champ4) { 
    if( (preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/', $champ4)) || 
    (preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',$champ4)) ) { 
    $host = explode('@', $champ4);
    if(checkdnsrr($host[1].'.', 'MX') ) return true;
    if(checkdnsrr($host[1].'.', 'A') ) return true;
    if(checkdnsrr($host[1].'.', 'CNAME') ) return true;
    }
    return false;
    }
    // FIN Fonction de contrôle du mail
    $MailTo = "commentaires@educanin.com"; //adresse à laquelle sera envoyé le contenu du formulaire
    $MailCc = "autre-mail@domaine.com"; // adresse à laquelle sera envoyé un communiqué
    $MailSubject = "Commentaires via Educanin"; //texte qui va figurer dans le champ "sujet" du email
    $MailHeader = "From: expediteur@educanin.com"; //adresse email qui va figurer dans le champ "expéditeur" du email et qui peut être remplacé par la variable "$champx" ("$champ3").
     
    /* Les routines suivantes permettent à chacune des variables de prendre la valeur des champs du formulaire et de les stocker ensuite dans la variable globale MailBody qui constituera le corps du message */
     
    $Envoi = 1; //initialisation de la variable envoi à 1
     
    if (Nom == ""){ //nom du premier champ
    echo("Vous n'avez pas mentionné votre nom !<br>"); //message qui s'affiche si le visiteur n'a pas rempli ce champ
    $Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
    }
    else {
    $MailBody .= "Nom : $Nom \n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
    }
    if (Ville == ""){
    echo("Vous n'avez pas mentionné votre ville !<br>");
    $Envoi = 0;
    }
    else {
    $MailBody .= "Ville : $Ville\n";
    }
    if (Nom_du_chien == ""){  //Ne pas mettre d'espace, remplacer par _
    echo("Vous n'avez pas mentionné le nom de votre chien !<br>");
    $Envoi = 0;
    }
    else {
    $MailBody .= "Nom du chien : $Nom_du_chien\n";
    }
    if (Courriel == ""){
    echo("Vous n'avez pas indiqué votre adresse de courriel !<br>");
    $Envoi = 0;
    }
    else {
    $MailBody .= "Courriel : $Courriel\n";
    }
    if (Commentaires == ""){
    echo("Vous n'avez pas inclus de commentaire !<br>");
    $Envoi = 0;
    }
    else {
    $MailBody .= "Commentaires : $Commentaires\n";
    }
     
    //Envoi du message
     
    if ($Envoi == 1) { //vérification que la variable envoi est bien à 1
    mail($MailTo, $MailSubject, $MailBody, $MailHeader); //envoi du message
    //mail($MailCc, $MailSubject, $MailBody, $MailHeader); //envoi du communiqué (enlever // pour le rendre opérationnel
    echo("<p>Votre message a bien été envoyé.<br>Merci de vos commentaires."); echo("<p>&nbsp;</p><p>&nbsp;</p><p align=\"center\"><a href=\"http://www.educanin.com/commentairesphp.htm\"><strong>Retour</strong></a></p>"); //affichage d'un message de confirmation.
    }
    ?>
    </body>
    </html>
    Merci beaucoup de votre aide.

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Tout d'abord, une chose à savoir : Les données envoyées par un formulaire sont récupérées par dans un tableau ayant le même nom que la méthode utilisée. Autrement dit ici tu utilises la méthode post alors la récupération se fera avec $_POST['nomchamp'], d'où le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    <?php /* Date de création: 2006-09-14 */ ?>
    <html>
    <body>
    <?php
     
    //Trouvé sur http://www.toulouse-renaissance.net/c_outils/
     
    // DEBUT Fonction de contrôle du mail PHP-UNIX
    function check_mail($champ4) { 
    if( (preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/', $champ4)) || 
    (preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',$champ4)) ) { 
    $host = explode('@', $champ4);
    if(checkdnsrr($host[1].'.', 'MX') ) return true;
    if(checkdnsrr($host[1].'.', 'A') ) return true;
    if(checkdnsrr($host[1].'.', 'CNAME') ) return true;
    }
    return false;
    }
    // FIN Fonction de contrôle du mail
    $MailTo = "commentaires@educanin.com"; //adresse à laquelle sera envoyé le contenu du formulaire
    $MailCc = "autre-mail@domaine.com"; // adresse à laquelle sera envoyé un communiqué
    $MailSubject = "Commentaires via Educanin"; //texte qui va figurer dans le champ "sujet" du email
    $MailHeader = "From: expediteur@educanin.com"; //adresse email qui va figurer dans le champ "expéditeur" du email et qui peut être remplacé par la variable "$champx" ("$champ3").
     
    /* Les routines suivantes permettent à chacune des variables de prendre la valeur des champs du formulaire et de les stocker ensuite dans la variable globale MailBody qui constituera le corps du message */
     
    $Envoi = 1; //initialisation de la variable envoi à 1
     
    if (empty($_POST['Nom'])){ //nom du premier champ
    echo("Vous n'avez pas mentionné votre nom !<br>"); //message qui s'affiche si le visiteur n'a pas rempli ce champ
    $Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
    }
    else {
    $MailBody .= 'Nom : '. $_POST['Nom']."\n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
    }
    if (empty($_POST['Ville'])){
    echo("Vous n'avez pas mentionné votre ville !<br>");
    $Envoi = 0;
    }
    else {
    $MailBody .= 'Ville : '. $_POST['Ville']."\n";
    }
    if (empty($_POST['Nom_du_chien'])){  //Ne pas mettre d'espace, remplacer par _
    echo("Vous n'avez pas mentionné le nom de votre chien !<br>");
    $Envoi = 0;
    }
    else {
    $MailBody .= 'Nom du chien : '.$_POST['Nom_du_chien']."\n";
    }
    if (empty($_POST['Courriel'])){
    echo("Vous n'avez pas indiqué votre adresse de courriel !<br>");
    $Envoi = 0;
    }
    else {
    $MailBody .= 'Courriel : '.$_POST['Courriel']."\n";
    }
    if (empty($_POST['Commentaires'])){
    echo("Vous n'avez pas inclus de commentaire !<br>");
    $Envoi = 0;
    }
    else {
    $MailBody .= 'Commentaires : '.$_POST['Commentaires']."\n";
    }
     
    //Envoi du message
     
    if ($Envoi == 1) { //vérification que la variable envoi est bien à 1
    mail($MailTo, $MailSubject, $MailBody, $MailHeader); //envoi du message
    //mail($MailCc, $MailSubject, $MailBody, $MailHeader); //envoi du communiqué (enlever // pour le rendre opérationnel
    echo("<p>Votre message a bien été envoyé.<br>Merci de vos commentaires."); echo("<p>&nbsp;</p><p>&nbsp;</p><p align=\"center\"><a href=\"http://www.educanin.com/commentairesphp.htm\"><strong>Retour</strong></a></p>"); //affichage d'un message de confirmation.
    }
    ?>
    </body>
    </html>
    Par contre je te conseille vivement de rajouter un test sur le isset de ton formulaire car si tu n'as pas envoyé le formulaire tu risques d'avoir des notices ou des warnings ou même les deux

Discussions similaires

  1. [MySQL] Probleme avec formulaire PHP 4 vers PHP 5
    Par artgraphy83 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/10/2011, 17h52
  2. Probleme avec formulaires php sur le site distant
    Par Lionel_aw dans le forum Langage
    Réponses: 2
    Dernier message: 26/03/2010, 16h16
  3. Problème avec formulaire PHP
    Par silvain dans le forum Langage
    Réponses: 8
    Dernier message: 28/08/2006, 23h58
  4. [Conception] Pb update avec formulaires php
    Par Manu_Corp dans le forum PHP & Base de données
    Réponses: 47
    Dernier message: 28/08/2006, 17h51
  5. VALUE d'un champ de formulaire avec variable php
    Par shub dans le forum Langage
    Réponses: 5
    Dernier message: 04/04/2006, 12h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo