Pregunta

Estoy mostrando Captcha de esta manera:

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

Tengo un hipervínculo llamado " Reload " cerca de eso. Quiero recordar ese archivo PHP sin actualizar mi página. Probablemente, AJAX está involucrado en ello. Por favor ayuda.

¿Fue útil?

Solución

¿Por qué no usar http://recaptcha.net/ y ahorrarse la molestia de todo? Solo manejarán el Captcha por usted.

Aquí hay información de integración en PHP y recaptcha: http://www.google.com/recaptcha/plugins/php

como mencioné, no es difícil integrarse en su aplicación web. Pruébalo!

Otros consejos

¿No hay algún parámetro con una marca de tiempo o algo así, para que la solicitud no se almacene en caché? ¿Por qué no sustituir el src con algo como (usando 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>

Aquí está el código que uso con 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>

Tal vez algo como:

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

Y luego agregue un botón con onclick="reloadCaptcha();".

No lo he probado y no soy un js guru, así que no estoy seguro de si funcionará.

un enfoque más se puede usar un poco ajax .. en su botón de actualización, dé la acción como: onclick = javascript: reloadCaptcha ();

en esta función reloadCaptcha, llama a tu captcha.php y actualiza el div que contiene tu captcha con el valor de retorno. puede devolver fácilmente un html y luego incrustarlo en el div.

Aquí hay otro.

Crea una variable global. Comprobaciones de existencia.

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();
}

Incluso puedes hacer un enlace y recargar tu captcha en la misma división. Si no es un problema.

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

bueno, he resuelto este problema con un simple truco; en lugar de poner el captcha en <img> poner eso en un <iframe> y use javascript para recargarlo cuando lo requiera

Javascript para recargar:

function reloadCaptcha()

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

HTML real:

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

resuelve mi problema, corrígeme si me equivoco en alguna parte

@meme: Yo uso lo mismo, pero con jquery. Si necesita algunos capthcas en una página:

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

Y función js:

$('.capcha-refresh').click(function(a){
       $('.captcha').attr('src','/securimage/securimage_show.php?' + Math.random());
       a.preventDefault();
})
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top