Captcha'yı yeniden AJAX kullanın

3 Cevap php

Bu soru daha önce sorulmuş olabilir - ama ne yazık ki, ben herhangi bir tatmin edici cevap bulamadı. Ben sadece benim somut durum için bunu sormak ve bunu denemek böylece en azından birkaç gün boyunca soruyu silmek için değil yöneticilerden soracaktır ...

Ben bir sayfa var. Bu bir captcha kullanır. Şöyle:

<?php
session_start(); // the captcha saves the md5 into the session
?>
<img src="captcha.php" onclick="this.src = this.src" />

Bu benim ilk kod oldu. Tarayıcı kaynak aynı ise bir görüntüyü yeniden faydasız condsidered çünkü, işe yaramadı. Benim geçerli çözüm olsun parametre geçmek için:

onclick="this.src = 'captcha.php?randomNumber='+ranNum"

JavaScript Değişken var ranNum rastgele her zaman onclick olayı oluşturulur. Olasılıksız olsa - - Bu çalışıyor, hala, ben, eğer ihtimalini sevmiyorum iki sayı üst üste iki kez aynı olmak durumunda. Rasgele sayı -50.000 ile 50.000 arasında değişmektedir rağmen - hala onu sevmiyorum. Ve ben yöntem doğru olduğunu sanmıyorum. AJAX vasıtasıyla, 'righter' yöntemi bilmek istiyorum. Ben bunun mümkün olduğunu biliyorum. Ben bu durumda ^ ^ nasıl mümkün biliyorum umut, göster bana lütfen.

Şimdiden teşekkürler!

Arada - Ben farklı, aldırma kapağını (t) cha büyü varsa, PHP dosyasına referans doğru benim kod: Ben randomImage.php kullanın

EDIT: JavaScript rasgele sayı sadece görüntü reloads böylece oluşturulur. Captcha.php $ _GET parametresi için umursamıyor. Dize gerçekten rastgele.

EDIT: Bu nedenle, ne bilmek istiyorum tarayıcı olayı farklı GET parametreleri her zaman geçmeden görüntü relaod yapmak için nasıl.

3 Cevap

Ne yazık ki, AJAX dinamik görüntüleri yüklemek için iyi bir yol sağlamaz. Hatta javascript "önyükleme" hile kullanarak sadece bir kez URL başına her görüntüyü yüklemek için tarayıcıyı alır. Aynı kaynaktan başka bir görüntü yüklemek için tarayıcı almak için sadece iyi yolu şimdi yapıyorsun gibi farklı bir parametre kullanmaktır. Diğer cevaplar belirttiğimiz gibi ve, zaman damgası bunun için yeterli olmalıdır.

Bunun yerine zaman damgası kullanarak düşündünüz mü?

onclick="this.src='captcha.php?ts='+Math.round(new Date().getTime()/1000)"

Sadece kullanımı:

<img src="captcha.php" onclick='this.src = "captcha.php&time=" + new Date().getTime();' />

Siz zaman parametresini atmak ve PHP rastgele sayı üretebilirsiniz. :)