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 :

[Dates] problème fonction rand()


Sujet :

Langage PHP

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [Dates] problème fonction rand()
    Bon, j'ai un gros problème avec la fonction rand().. au premier chargement du script, elle sort toujours les mêmes chiffres! près, en postant de nouvelles variables, et en faisant des erreurs, a yest, c'est parti, c'est aléatoire... Voilà le script :
    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
    <div id="site_mail">
     
    <?php
    $exped=$HTTP_POST_VARS['exped'];
    $objet=$HTTP_POST_VARS['objet'];
    $message=stripslashes(nl2br(UTF8_decode($HTTP_POST_VARS['message'])));
     
    if (isset($HTTP_POST_VARS['envoi']) && isset($HTTP_POST_VARS['antispam']))
    {
    $reponse=md5($HTTP_POST_VARS['antispam']);
    $solution=$HTTP_POST_VARS['solution'];
        if ($reponse==$solution) {$ok=1;} else { echo "<h4 id=\"erreur\"><img src=\"themes/default/img/danger.gif\">Mauvais calcul pour l'anti-spam.</h4>";}
    }
     
    if (($reponse!=$solution) || (empty($exped) || empty($objet) || empty($message)))
    {
    $x=rand(1, 49);
    $y=rand(1, 49);
    $z=$x + $y;
    $solution=md5($z);
    }
     
    if (!empty($exped) && !empty($objet) && !empty($message) && $ok==1)
    {
      $headers ='MIME-Version: 1.0\n';
      $headers .="From:".$exped."\n";
      $headers .="Reply-To:".$exped."\n";
      $headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
      $headers .='Content-Transfer-Encoding: 8bit';
      $mail="monmail@monsite.fr";
      if(mail($mail,$objet,$message,$headers))
     
    			{
    			echo "<h3>Mail envoy&eacute; !</h3>";
    			$x=rand(1, 49);
                            $y=rand(1, 49);
                            $z=$x + $y;
                            $solution=md5($z);
    			}
     
    			else
     
    			{
    			echo "<p>Problème : Votre mail n'a pas pu être envoyé !</p>";
    			}
    }
     
    elseif (isset($HTTP_POST_VARS['envoi']) && (!empty($exped) || !empty($objet) || !empty($message))) {echo "<h4 id=\"erreur\"><img src=\"themes/default/img/danger.gif\">Veuillez renseigner le(s) champ(s) marqué(s) d'une croix.</h4>";}
     
    ?>
     
    <form onload="option()" name="mail" method="POST" action="<?php $PHP_SELF; ?>" enctype="multipart/form-data">
    <p><?php if ((isset($HTTP_POST_VARS['envoi'])) && (empty($exped))) {echo "<img src=\"themes/default/img/cross.gif\">";} ?>Votre adresse e-mail :<br/>
    <input name="exped" value="<?php echo $HTTP_POST_VARS['exped']; ?>" type="text" size="55" /></p>
    <p><?php if ((isset($HTTP_POST_VARS['envoi'])) && (empty($objet))) {echo "<img src=\"themes/default/img/cross.gif\">";} ?>L'objet de votre message :<br/>
    <input name="objet" value="<?php echo $HTTP_POST_VARS['objet']; ?>" type="text" size="55" /></p>
    <p><?php if ((isset($HTTP_POST_VARS['envoi'])) && (empty($message))) {echo "<img src=\"themes/default/img/cross.gif\">";} ?>Votre message :<br/>
    <textarea name="message" cols="41" rows="15"><?php echo $HTTP_POST_VARS['message']; ?></textarea></p>
    <p><?php if ((isset($HTTP_POST_VARS['envoi'])) && (empty($antispam))) {echo "<img src=\"themes/default/img/cross.gif\">";} ?>Filtre anti-spam :<br/>
    <?php echo "Qu'obtient-on quand à $x on ajoute $y ?"; ?>
    <input name="antispam" type="text" size="55" /></p>
    <input type="hidden" name="solution" value="<?php echo $solution; ?>" />
    <p><input type="submit" name="envoi" value="Envoyer" /></p>
    </form>
     
     
    </div>
    Et voilà l'endroit où est le script :
    http://www.eacute.fr/dotclear/index.php?option=mail

    je sais qu'il existe des filtres anti spam tout fait, mais en l'occurence j'aime faire les choses moi-même quand je sais que c'est possible... et là ça m'agace !

    Merci d'avance à tous !

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 411
    Points : 15 780
    Points
    15 780
    Par défaut
    c'est surement une histoire d'initialisation.
    utilise "mt_rand" à la place de "rand"
    plus d'informations là : http://php.net/mt_rand

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Alors non, ça ne change rien, par contre, j'ai essayé un truc... en effaçant les recherches et données de formulaires enregistrées, ça repart sur d'autres chiffres... qui réapparaissent à chaque chargement du formulaire, sauf si des valeurs sont postées dedans... Commen empêcher le navigateur de stocker ces données ?? les autres anti spam doivent bien faire pareil, j'imagine...

    Merci encore d'avance...

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    ça y est j'ai trouvé !!
    il fallait empêcher le navigateur pour cette page de stocker les infos en cache....
    avec un petit if pour n'activer cette fonction que sur ce formulaire, ça donne :
    header("Cache-control: private, no-cache");
    header("Expires: Mon, 25 Feb 2002 01:00:00 GMT"); // une date du passé
    header("Pragma: no-cache");

    Ouf! Donc là je pense avoir un "antispam maison" assez imparable...

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

Discussions similaires

  1. [Dates] problème fonction date
    Par tawba dans le forum Langage
    Réponses: 5
    Dernier message: 05/01/2009, 16h45
  2. [Dates] Problème avec la fonction date()
    Par Kernald dans le forum Langage
    Réponses: 5
    Dernier message: 16/02/2007, 11h50
  3. [Dates] problème fonction setlocale()
    Par oceane751 dans le forum Langage
    Réponses: 1
    Dernier message: 12/01/2007, 00h48
  4. [Dates] Problème avec la fonction header
    Par d.w.d dans le forum Langage
    Réponses: 2
    Dernier message: 06/09/2005, 16h33
  5. Problème de date dans fonction utlisateur
    Par lutin2003 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/04/2005, 16h25

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