使用 jQuery 的 ajax 调用刷新验证码

发布于 2024-09-14 19:52:55 字数 478 浏览 4 评论 0原文

我编写了自己的 php 验证码脚本,带有 jpeg 标头,这样我就可以

<img src="captcha.php">

通过将验证码的值存储到会话变量中来说明哪个有效。当用户无法阅读时,我希望它可以刷新。

我首先尝试过

$("#refresh").click(function() {
    $("#captcha").attr("src","captcha.php");
});

,但这当然没有意义,我需要进行 ajax 调用。 你们会如何建议我这样做?

PS我也尝试过

$.ajax({
    url: "captcha.php",
    success: function(result) {
        $("#captcha").attr("src",result);
    }
});

I wrote my own php captcha script, with a jpeg header, so that I can say

<img src="captcha.php">

which works by storing the value of the captcha into the session variable. When the user can't read it, I want it to be refreshable.

I first tried

$("#refresh").click(function() {
    $("#captcha").attr("src","captcha.php");
});

but of course that doesn't make sense, and I need to make an ajax call instead.
How would you all recommend I do this?

P.S. I also tried

$.ajax({
    url: "captcha.php",
    success: function(result) {
        $("#captcha").attr("src",result);
    }
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

痴骨ら 2024-09-21 19:52:55

第一种方法实际上对我来说很有意义:

$("#refresh").click(function() {
    $("#captcha").attr("src","captcha.php?r=" + Math.random());
});

我假设 captcha.php 所做的唯一事情是将验证码值存储在会话变量中,并在每次访问时输出验证码图像。

因此,当您再次设置图像的 src 并向其添加查询字符串变量时,请求将再次发送到服务器脚本“captcha.php”,该脚本将重新生成验证码并将新值存储在会话变量。

The first method actually makes sense to me:

$("#refresh").click(function() {
    $("#captcha").attr("src","captcha.php?r=" + Math.random());
});

I assume the only thing captcha.php does is store the captcha value in session variable and outputs the captcha image, whenever its accessed.

So when you set the src of the image again and add a query string variable to it, a request is gonna be sent to the server script "captcha.php" again, which is going to then regenerate the captcha and store the new value in the session variable.

開玄 2024-09-21 19:52:55

URL: 中显式指定状态:

$.ajax({
    url: "captcha.php?generateNew",
    success: function(result) {
        $("#captcha").attr("src","captcha.php?foo="+Math.random());
    }
});

将实际的 CAPTHCHA 字符串存储在 _SESSION 变量中是有意义的,但您应该在php 文件内的

if(isset($_GET['generateNew']){
    $_SESSION['captchaString'] = generateCaptchaString();
}else{
    dumpCaptchaImage();
}

It makes sense to store the actual CAPTHCHA string in the _SESSION variable, but you should explicitly specify the state in the URL:

$.ajax({
    url: "captcha.php?generateNew",
    success: function(result) {
        $("#captcha").attr("src","captcha.php?foo="+Math.random());
    }
});

inside your php-file:

if(isset($_GET['generateNew']){
    $_SESSION['captchaString'] = generateCaptchaString();
}else{
    dumpCaptchaImage();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文