Partage
  • Partager sur Facebook
  • Partager sur Twitter

problème captcha:

mon captcha ne s'actualise qu'une seule fois!

Sujet résolu
    21 août 2010 à 14:37:14

    Bonjour!
    Tout est dans le titre

    voici la partie du code qui permet l'affichage du captcha:

    <div id="captchabox">
    <img class="icone" src="/images/actualiser.gif" alt="actualiser" onClick="rechargerCaptcha();"/><br/>
    <img id="captcha" src="/include/captcha.php?refresh=mt_rand(0,1000)" alt="captacha"> <br/>
    <input type="text" id="cap" name="captcha" tabindex="170"/>
    </div>
    


    voici la fonction pour actualiser le captcha

    function rechargerCaptcha()
    {
    var captcha = document.getElementById("captcha"); 
    captcha.src="/include/captcha.php";
    }
    


    merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      21 août 2010 à 14:43:52

      Salut, c'est normal, le navigateur n'actualise pas car il possède l'image en cache. Pour qu'il actualise, il faut lui faire croire qu'il s'agit d'une autre image en modifiant son url. Rien de plus simple (il faut juste y penser) :

      captcha.src = 'include/captcha.php?d=' + String( (new Date()).getTime() );
      • Partager sur Facebook
      • Partager sur Twitter
        21 août 2010 à 14:52:21

        dsl mais je vois pas que c'est très simple
        a vrai dire je comprends pas trop comment çà marche, car pour moi c'est php qui génère l'image, donc c'est le serveur! Mais pour actualiser c'est JS qui permet de le faire donc le navigateur ... donc je comprends pas comment çà marche dans les autres sites!
        C'est pour çà que j'arrive pas à résoudre moi-même le problème

        sinon, normalement si j'insère cette ligne de code, est ce que çà va marcher?
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          21 août 2010 à 14:58:03

          Malgré que PHP génère l'image, une fois générée 1 fois par PHP, le navigateur le mets en cache et c'est toujours la meme qui est affichée
          • Partager sur Facebook
          • Partager sur Twitter
            21 août 2010 à 15:09:46

            oui çà c'est clair, mais comment fait-on pour l'actualiser? pour modifier l'image en cache, donc l'image affichée pour le visiteur?
            est ce qu'il y a une requête envoyée vers le serveur? sinon comment çà marche?
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              21 août 2010 à 15:14:51

              Bien un header() permet d'éviter la mise en cache (je me souviens plus du paramètre à passer mais ça contient 'no-cache', renseigne-toi).
              Il faut le mettre dans le code de génération de l'image.
              • Partager sur Facebook
              • Partager sur Twitter
                21 août 2010 à 16:05:34

                L'image s'affiche plus :s

                voici mon code

                <?php
                session_start();
                include('../include/fonctions.php');
                header("Content-type: image/png");
                header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
                header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
                header("Cache-Control: no-cache, must-revalidate"); 
                header("Pragma: no-cache"); 
                captcha();
                ?>
                
                • Partager sur Facebook
                • Partager sur Twitter
                  21 août 2010 à 16:29:00

                  Salut,

                  La solution proposée par LCaba est la bonne. Donc avant de demander "si je le fais, ça marche ?", fais le et tu verras par toi-même.
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Directeur technique, créateur de jeux HTML5 et fan de JavaScript | La suite de OnHack est sur les rails !

                  problème captcha:

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown