PHP和JavaScript:重新加载验证码图像

时间:2011-02-08 15:46:01

标签: php javascript ajax captcha partial-page-refresh

我在PHP中创建了自己的验证码,只是为了学习。没关系,按我的意愿工作。我试图添加一个“刷新图像”按钮,但我不知道该怎么做。

表单代码:

<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中的东西会很棒! 谢谢。

3 个答案:

答案 0 :(得分:0)

您是否可以重新加载对创建新验证码的页面进行AJAX调用,将新创建的结果返回到DIV中?

答案 1 :(得分: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'可以做到这一点,但只是为了得到一个新的请求,我已经使用另一个图像(它还为你提供了更多的搜索/学习)。

答案 2 :(得分:0)

表单完成后,如何检查验证码是否正确?会话变量?

如果它是单个会话变量,您可以使用普通的javascript刷新图像。将随机查询字符串添加到图像URL的末尾将避免任何缓存问题。