Question

Je montre Captcha de cette manière:

<img src="ReturnCaptcha2.php" alt="CAPTCHA" width="100" height="50">

J'ai un lien hypertexte nommé " Reload " près de lui. Je souhaite rappeler ce fichier PHP sans actualiser ma page. AJAX est probablement impliqué dans cela. S'il vous plaît aider.

Était-ce utile?

La solution

Pourquoi ne pas utiliser http://recaptcha.net/ et vous épargner la peine? Ils vont juste gérer le Captcha pour vous.

Voici quelques informations d’intégration sur PHP et recaptcha: http://www.google.com/recaptcha/plugins/php

comme je l’ai dit, il n’est pas difficile du tout de s’intégrer à votre application Web. Essayez-le!

Autres conseils

N'y a-t-il pas un paramètre avec un horodatage ou quelque chose d'autre pour que la demande ne soit pas mise en cache? Pourquoi ne pas remplacer le src par quelque chose comme (en utilisant jquery)

$("img#your-selector").attr("src","ReturnCaptcha2.php?_="+((new Date()).getTime()));
<a href="javascript:;" title="Reload Image" 
   onclick="document.getElementById('captcha').src = 'cimage.php?' + Math.random(); 
   return false">
   <img src="cimage.php" alt="Enter captcha" title="Enter captcha" id="captcha"/>
</a>

Voici le code que j'utilise avec Secureimage PHP Captcha.

<form method="POST">
<input type="hidden" name="PHPSESSID" value="0b21dde61d891cd" />
<img id="siimage" src="securimage_show.php?sid=2ef186788e" alt="CAPTCHA Image" width="126" height="36" /><br />
<input type="text" name="code" /><br />
<a href="#" onclick="document.getElementById('siimage').src = 'securimage_show.php?' + Math.random(); return false">Reload Image</a>
<input type="submit" value="Submit Form" />
</form>

Peut-être quelque chose comme:

function reloadCaptcha()
{
img = document.getElementById('captcha');
img.src = 'ReturnCaptcha2.php';
}

Ajoutez ensuite un bouton avec onclick="reloadCaptcha();".

Je ne l’ai pas testé et je ne suis pas un gourou js, alors je ne sais pas si cela fonctionnera.

une autre approche peut être utiliser un peu ajax .. sur votre bouton d'actualisation, indiquez l'action comme suit: onclick = javascript: reloadCaptcha ();

dans cette fonction reloadCaptcha, donnez un appel à votre captcha.php et mettez à jour le div qui détient votre captcha avec la valeur de retour. vous pouvez facilement retourner un code HTML, puis l'intégrer au div.

En voici un autre.

Il crée une variable globale. Vérifie l'existence.

function get_captcha(){
    //get original url refresh
    console.log('captcha requested.');
    if(typeof window.captcha_src === 'undefined'){
        window.captcha_src = document.getElementById('captcha').src;
    }
    document.getElementById('captcha').src = window.captcha_src + '&nocache=' + Math.random();
}

Vous pouvez même créer un lien et recharger votre captcha dans la même division. Si ce n'est pas un problème.

Enter Image Text <input name="captcha" type="text"> <img src="captcha.php" /><br> <a href="captcha.php">Reload Captcha</a><br/>

eh bien, j'ai résolu ce problème avec un truc simple; au lieu de mettre le captcha dans <img> mettre cela dans un <iframe> et utilisez javascript pour le recharger quand vous en aurez besoin

Javascript à recharger:

function reloadCaptcha()

{
document.getElementById('cap').src='captcha.php';
}

HTML actuel:

<iframe id="cap" src="captcha.php"></iframe> <input type="button" value="reload" onclick="reloadCaptcha();"/>

cela résout mon problème, corrigez-moi si je me trompe quelque part

@meme: J'utilise la même chose, mais avec jQuery. Si vous avez besoin de quelques capthcas sur une seule page:

<img class="captcha" src="/securimage/securimage_show.php" alt="CAPTCHA Image">
<a class="capcha-refresh" href="#" ><img src="/images/Refresh-icon.png"></a>

Et js fonction:

$('.capcha-refresh').click(function(a){
       $('.captcha').attr('src','/securimage/securimage_show.php?' + Math.random());
       a.preventDefault();
})
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top