2011-02-08 7 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

ありがとうございます! – thom

+0

:))は、コードが何をしているのでしょうか? –

0

リロードして、新しいcaptchaを作成するページへのAJAX呼び出しを作成できますか?新しく作成した結果をDIVに返しますか?

+0

私のキャプチャクラスはイメージをダンプします。上記を参照してください、ありがとうございます。 – thom

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'は、トリックを行うだろうが、ちょうどそれが取得SHUREするためには、私はそれが(それはallsoあなたに学ぶ/検索するもう少しを与える)別の画像を使用して作った新しい要求です。

+0

私はいつも同じイメージを取得します。キャッシュのクリーニングはどうですか?私はそれを試してみる、ありがとう。 – thom

+0

あなたがバグだと訂正するなら、それはshureではありませんが、クラスのイメージを出力するときに過去にヘッダーを設定するようにしてください。 ( "Expires:Sat、1997年7月26日05:00:00 GMT"); //過去の日付 '私はそのトリックをすると思います。 –

+0

実際に別の変数名(無意味ではありません)でなく、別のURLに設定する必要があります。 '' img.php?random = '+ Math.random() 'のようなものをお勧めします。 – igorw