Pergunta

Eu estou mostrando captcha desta forma:

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

Eu tenho um link com o nome "Recarregar" perto dele. Quero lembrar que arquivo PHP sem atualizar minha página. Provavelmente, AJAX está envolvido nela. Por favor, ajudem.

Foi útil?

Solução

Por que não usar http://recaptcha.net/ e salvar o problema de tudo isso? Eles só vão lidar com o captcha para você.

Eis aqui algumas informações integração em PHP e recaptcha: http://www.google.com/recaptcha/plugins/php

como já referi, não é difícil em tudo para integrar em seu webapp. Experimentá-lo!

Outras dicas

Não existe algum parâmetro com um timestamp ou algo assim, para que o pedido não fica armazenada em cache? Por que não substituir o src com 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>

Aqui está o uso de código I com Secureimage PHP de 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>

Talvez algo como:

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

E, em seguida, adicionar um botão com onclick="reloadCaptcha();".

Eu não testei isso, e eu não sou nenhum guru js, então não tenho certeza se ele vai funcionar.

mais uma abordagem pode ser usar um pouco de ajax .. em seu botão de atualização dar a ação como: onclick = javascript: reloadCaptcha ();

nesta função reloadCaptcha, dar uma chamada para o seu captcha.php e atualizar o div segurando o captcha com o valor de retorno. você pode facilmente retornar um html e depois incorporá-lo no div.

Aqui é outra.

Ele cria variável global. Verifica se há existência.

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

Você pode até mesmo fazer uma ligação e recarregar sua captcha na mesma divisão. Se isso não é um problema.

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

Bem, eu ter resolvido este problema com um truque simples; em vez de colocar o captcha em <img> colocar isso em um <iframe> e usar o JavaScript para recarregá-lo quando u exigem

Javascript para recarregar:

function reloadCaptcha()

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

HTML real:

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

que resolve meu problema, me corrija se eu estou em algum lugar errado

@meme: Eu uso mesma coisa, mas com jQuery. Se você precisa de alguns capthcas em uma 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>
função

e JS:

$('.capcha-refresh').click(function(a){
       $('.captcha').attr('src','/securimage/securimage_show.php?' + Math.random());
       a.preventDefault();
})
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top