2011-02-08 50 views
0

我已經在PHP中創建了自己的驗證碼類,只是爲了學習。沒關係,按我的意願工作。我試圖添加一個「刷新圖像」按鈕,但我不知道該怎麼做。PHP和JavaScript:重新加載驗證碼圖像

形式代碼:

<p><img src="img.php" alt="Captcha!" /></p> 

img.php代碼:

<?php 
require_once 'captcha.class.php'; 
$captcha = Captcha::instance(10); 
echo $captcha; 
?> 

__toString方法:

public function __toString() 
{ 
    ob_start(); 
    header('Content-Type: image/jpeg'); 
    imagejpeg($this->drawImage(), null, 100); 
    return ob_get_flush(); 
} 

這些代碼將輸出驗證碼。我怎樣才能刷新這張圖片? AJAX中的東西會很棒! 謝謝。

回答

0

表單填寫完成後,您如何檢查驗證碼是否正確?會話變量?

如果它是一個單一的會話變量,你可以刷新圖像使用普通的JavaScript。將隨機查詢字符串添加到圖像url的末尾可避免任何緩存問題。

0

你可以重新加載一個AJAX調用的頁面,創建一個新的驗證碼,將新創建的結果返回到DIV?

+0

我的驗證碼類轉儲圖片,請參閱上文,謝謝。 – thom 2011-02-08 15:54:06

0
<html> 
<head> 
<script type="text/javascript"> 
    function reload() 
    { 
     var img = new Image(); 
     img.src = 'img.php'; 
     var x = document.getElementById('captcha'); 
     x.src = img.src; 
    } 
</script> 
</head> 
<body> 
<a href="javascript: reload()" >Reload</a> 
<img src="img.php" alt="Captcha!" id="captcha" /> 
</body> 
</html> 

也許一個普通的x.src = 'img.php'會做的伎倆,但只是要舒爾得到它是一個新的請求,我一直在使用其它圖像製作(它allso爲您提供了更多的搜索/學習)。

+0

我總是得到相同的圖像。清理緩存怎麼樣?我會嘗試,謝謝。 – thom 2011-02-08 16:01:23

+0

不知道它是否會糾正你的錯誤,但當你輸出你的圖像時,請確保你設置了過去的標題。像'header(「Expires:Sat,1997年7月26日05:00:00 GMT」); //過去的日期我想要做的伎倆 – 2011-02-08 16:03:50