我编写了自己的php captcha脚本,带有jpeg标题,以便我可以说
<img src="captcha.php">
通过将验证码的值存储到会话变量中来工作。当用户无法阅读时,我希望它可以刷新。
我第一次尝试
$("#refresh").click(function() {
$("#captcha").attr("src","captcha.php");
});
但当然这没有意义,我需要做一个ajax调用。 你们怎么都建议我这样做?
P.S。我也试过
$.ajax({
url: "captcha.php",
success: function(result) {
$("#captcha").attr("src",result);
}
});
答案 0 :(得分:5)
第一种方法实际上对我有意义:
$("#refresh").click(function() {
$("#captcha").attr("src","captcha.php?r=" + Math.random());
});
我假设captcha.php唯一能做的就是将captcha值存储在会话变量中,并在访问时输出验证码图像。
因此,当您再次设置图像的src并向其添加查询字符串变量时,请求将再次发送到服务器脚本“captcha.php”,然后重新生成验证码并存储会话变量中的新值。
答案 1 :(得分:0)
将实际的CAPTHCHA字符串存储在_SESSION变量中是有意义的,但是您应该在URL中明确指定状态:
$.ajax({
url: "captcha.php?generateNew",
success: function(result) {
$("#captcha").attr("src","captcha.php?foo="+Math.random());
}
});
在你的php文件中:
if(isset($_GET['generateNew']){
$_SESSION['captchaString'] = generateCaptchaString();
}else{
dumpCaptchaImage();
}