[PHP / JavaScript]: Bir Captcha yenilemek nasıl?

7 Cevap php

Ben bu şekilde Captcha gösteriyorum:

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

Bunun yanında "yükle" adlı bir köprü var. Benim sayfa yenileme olmadan PHP dosyası hatırlamak istiyorum. Muhtemelen, AJAX buna dahil olduğunu. Yardımcı olun.

7 Cevap

Neden http://recaptcha.net/ kullanın ve kendinize bunun tüm sorun kurtarmak değil? Onlar sadece sizin için Captcha idare edecek.

Here is some integration info on PHP and recaptcha: http://www.google.com/recaptcha/plugins/php

Bahsettiğim gibi, bu webapp entegre hiç de zor değil. Bir deneyin!

Istek önbelleğe almaz, böylece orada bir zaman damgası falan bazı parametre değil mi? Neden (jquery kullanarak) gibi bir şey ile src yerine geçmez

$("img#your-selector").attr("src","ReturnCaptcha2.php?_="+((new Date()).getTime()));

İşte Secureimage PHP Captcha ile kullanmak kodudur.

<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>

Belki bir şey gibi:

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

Ve sonra onclick="reloadCaptcha();" ile bir düğme ekleyin.

Ben henüz denemedim, ve ben işe yarayacak emin değil hiçbir js gurusu değilim, bu yüzden.

The browser caches images. If you change the src of the image to the same thing, the brwoser is going to assume it's the same image. To work around this, you have to change the image's src to something dynamic and unique.
Function to change it:

function refreshsrc(elem, url) {
    elem.src = url+'?'+Math.random()+new Date().getTime();
}

DOM elemanı ile bu işlevini çağırın.

well i have solved this problem with a simple trick; instead of putting the captcha in <img> put that in an <iframe> and use javascript to reload it when u require

Javascript güncelle için:

function reloadCaptcha()

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

Gerçek HTML:

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

it solves my problem, correct me if i am wrong somewhere

@meme: I use same thing, but with jquery. If you need a few capthcas in one page:

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

Ve js fonksiyonu:

$('.capcha-refresh').click(function(a){
       $('.captcha').attr('src','/securimage/securimage_show.php?' + Math.random());
       a.preventDefault();
})