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 :

rand() dans un formulaire


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 53
    Par défaut rand() dans un formulaire
    Bonjour à tous,
    J'essaye de réaliser un truc à la mode !
    J'ai un formulaire mail sur lequel je fais apparaitre un code avec la fonction rand() à resaisir par l'utilisteur pour contrer les robots.
    J'arrive à générer un nombre que j'affiche sur mon formulaire (pour l'instant en texte, j'utiliserai des gifs plus tard)
    Bref, mon formulaire mail s'affiche avec mon nombre aléatoire.
    Au moment ou le formulaire est envoyé, je recharge le même fichier php, qui teste le code saisie avec la code généré puis envoie le mail.
    Je constate que la variable qui contient le code généré ($rand) se vide alors que la variable qui contient le code saisie ($code) conserve son contenu !
    J'ai pu le vérifier en posant des echo

    Voici mon 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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
     
    <html>
    <head>
    <title>Email</title>
    </head>
     
    <body>
     
    <? 
     
    if (isset($_POST['upload']))
    {
     	if ($nom     == "(facultatif)" OR $nom == "") { $nom = "?"; }
     	if ($email   == "(facultatif)" ) { $email   = ""; }
     	if ($objet   == "(facultatif)" ) { $objet   = "Un email depuis le site web !"; }
     	if ($message == "Merci!"       ) { $message = ""; }
     
    	if ($email != "" && (eregi("^[_\.0-9a-z-]+@([0-9a-z-]+\.)+[a-z]{2,4}$",$email)==false) ) { echo "<b>Email non valide !</b>"; }
     	elseif ( $message == "" && $fichier == "") { echo "<b>Il n'y a pas de message !</b>"; }
    	elseif ( $fichier != "" && file_exists("Upload/Mails/".$_FILES['fichier']['name'])) { echo "<b>Renommer la pièce jointe !</b>"; }
    	elseif ( $fichier != "" && !move_uploaded_file($_FILES['fichier']['tmp_name'],"Upload/Mails/".$_FILES['fichier']['name'])) { echo "<b>Echec avec la pièce jointe !</b>"; }
    	elseif ( $code    != $rand) { echo "<b>Code incorrect !</b>"; }
     
    	else
    	{	if ($fichier == "") { $message = "<html>\n<body>\nNom: ".$nom."<br><br>\n".$message."\n</body>\n</html>"; }
     		else
    			{
    	 		$message = "<html>\n<body>\nNom: ".$nom."<br><br>\n".$message."<br><br>\nPJ: ".
    	 		"<a href=\"ftp://XXXXXXXX/Upload/Mails/".$_FILES['fichier']['name']."\">".$_FILES['fichier']['name']."</a> (Ftp) ou: ".
    	 		"<a href=\"XXXXXXXX/Upload/Mails/".$_FILES['fichier']['name']."\">".$_FILES['fichier']['name']."</a> (Http)\n</body>\n</html>";
    	 		}
     		if ($email == "") { mail("xxxxxxxxxxx",$objet,$message,"X-priority:".$priorite."\nContent-type:text/html\nFrom:xxxxxxxxxxxxxx\n"); }
     		else 	{ mail("xxxxxxxxxxxxxx",$objet,$message,"X-priority:".$priorite."\nContent-type:text/html\nFrom:xxxxxxxxxxxxx\nReply-to:$email\n"); }
     
    		echo "<b>Votre message est bien parti !</b>";
     
    	} // fin de else
    } // fin de if
    ?>
     
    <!-- <form method="POST" enctype="multipart/form-data" action="Envoie_mail.php" name="formulaire" target="popup" onsubmit="javascript:window.open('','popup','directories=0, menuBar=0, status=0, location=0, scrollbars=0, resizable=0, width=370, height=100, top=50, left=50');"> --> 
     
    <form method="POST" enctype="multipart/form-data" action="Email.php"> 
        <table width="70%" border="1" rules="none">
          <tr>
            <td>Votre Nom</td>
            <td><input name="nom" type="text" size="40" maxlength="30" value="(facultatif)" title="30 caractères maxi" onfocus="this.style.backgroundColor='#fff9b9'; if (value=='(facultatif)') {value=''}" onblur="this.style.backgroundColor=''; if (value=='') {value='(facultatif)'}" ></td>
          </tr>
          <tr>
            <td>Votre email</td>
            <td><input name="email" type="text" size="40" maxlength="30" value="(facultatif)" title="30 caractères maxi" onfocus="this.style.backgroundColor='#fff9b9'; if (value=='(facultatif)') {value=''}" onblur="this.style.backgroundColor=''; if (value=='') {value='(facultatif)'}" ></td>
          </tr>
          <tr>
            <td>Objet</td>
            <td><input name="objet" type="text" size="40" maxlength="30" value="(facultatif)" title="30 caractères maxi" onfocus="this.style.backgroundColor='#fff9b9'; if (value=='(facultatif)') {value=''}" onblur="this.style.backgroundColor=''; if (value=='') {value='(facultatif)'}" ></td>
          </tr>
          <tr>
            <td>Priorité</td>
            <td>
    		<select name="priorite" size="1" id="priorite">
    		    <option value="1" style="color:#ffffff;background-color:#000066">Maximale</option>
    		    <option value="2" style="color:#ffffff;background-color:#0000CC">Elevée</option>
    		    <option value="3" style="color:#000000;background-color:#9999FF" selected>Normale</option>
    		    <option value="4" style="color:#000000;background-color:#CCCCFF">Faible</option>
    		    <option value="5" style="color:#000000;background-color:#CCFFFF">Minimale</option>
    		</select>
            </td>
          </tr>
          <tr>
            <td><br><br>Message...<br><img src="Images/clavier.gif" border="0" onmouseover="this.className='FlipH'" onmouseout="this.className=''"></td>
            <td><textarea name="message" cols="55" rows="8" wrap="PHYSICAL"></textarea></td>
          </tr>
          <tr>
    	<td>Pièce jointe</td>
    	<td><input type="file" name="fichier" size="56" title="Quelques Mo maxi" onfocus="this.style.backgroundColor='#fff9b9'" onblur="this.style.backgroundColor=''" ></td>
          </tr>
          <tr>
    	<td>Code : <b><? $rand = rand(100000,1000000); echo $rand; ?></b></td>
            <td><input name="code" type="text" size="30" maxlength="6" value="(recopier le code ci-contre)" title="sécurité anti robot" onfocus="this.style.backgroundColor='#fff9b9'; if (value=='(recopier le code ci-contre)') {value=''}" onblur="this.style.backgroundColor=''; if (value=='') {value='(recopier le code ci-contre)'}" ></td>
          </tr>
        </table>
     
    	<input type="submit" name="upload" value="Envoyez" class="bouton" onMouseOver="this.className='boutonOVER';" onMouseOut="this.className='boutonOUT';" >
    	<input type="reset" value="Effacer" class="bouton" onMouseOver="this.className='boutonOVER';" onMouseOut="this.className='boutonOUT';" >
     
    </form>
     
    </body>
    </html>
    Mystère !
    Les autres variables sont conservées quand la page se recharge sauf celle qui contient le nombre aléatoire !

    Help me !!!
    Merci!

  2. #2
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    c'est normal tu ne mets pas ta valeur dans un champ de type input par exemple du coup elle n'est aucunement renvoyée lors du post du formulaire. Il faudrait la mettre dans un input en lecture seule au moins.

    Maintenant ca n'est pas du tout sécurisé cette solution puisque de toute facon, si le code est lisible en clair les robots le simuleront aussi facilement. Tu vas me dire "oui mais apres je passerai a une image en GIF" mais il faudra bien que tu mémorises la valeur écrite dans l'image en GIF ce qui te ramènera au meme probleme.

    En gros, a ta place, je stockerai cette valeur dans une variable de session et je me baserai pas sur un champ du formulaire (qui peut etre changé facilement).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 53
    Par défaut
    Merci pour l'info !
    La réponse était rapide et claire : je teste et donne le résultat dans 10 minutes.
    pour l'histoire des sessoins, je débute et je ne sais pas trop comment ca marche mais c'est peut-être l'occasion de s'y mettre !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 53
    Par défaut
    ok ca marche !
    Merci chef !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    <td>Code : <b><? $rand=rand(100000,1000000); echo $rand; ?></b></td>
    <? echo "<input name=\"code1\" type=\"hidden\" value=\"$rand\">"; ?>
    <td><input name="code2" type="text" size="30" maxlength="6" value="(recopier le code ci-contre)" title="sécurité anti robot" onfocus="this.style.backgroundColor='#fff9b9'; if (value=='(recopier le code ci-contre)') {value=''}" onblur="this.style.backgroundColor=''; if (value=='') {value='(recopier le code ci-contre)'}" ></td>
    avec un peu plus haut :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    elseif ( $code1   != $code2) { echo "<b>Code incorrect !</b>"; }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Response.BinaryWrite dans un formulaire
    Par faamugol dans le forum ASP
    Réponses: 4
    Dernier message: 12/05/2004, 13h45
  2. Forcer la saisie en MAJ dans un Formulaire
    Par lolos dans le forum IHM
    Réponses: 4
    Dernier message: 12/08/2003, 11h57
  3. Réponses: 3
    Dernier message: 19/03/2003, 16h19
  4. Réponses: 2
    Dernier message: 12/02/2003, 16h26
  5. [CR][Access] intégrer un viewer dans un formulaire access
    Par nicolak dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 13/01/2003, 16h52

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