【问题标题】:Captcha Refresh Script Only Works Once验证码刷新脚本只工作一次
【发布时间】:2014-06-20 09:42:22
【问题描述】:

我有一个用于表单验证的验证码图像和一个用于在用户无法读取图像时刷新图像的 javascript。该脚本在 Chrome 中运行良好,但在 Firefox 中它只在第一次运行,之后虽然脚本运行,但图像不会刷新。图片src包括:

<?php echo "?rand=" . rand(); ?>

但尽管 php 工作正常,但刷新仍然无法操作。

我检查了thisthis,并尝试了许多建议——例如添加和删除no cache 元标记,将body 和head 标记更改为h:bodyh:head

许多建议(例如here)描述的代码情况与我的不同(在我的情况下,我使用的是 php 生成的图像。

任何帮助将不胜感激。

        <script type="text/javascript">
        function refresh_captcha()
        {
            var img = document.getElementById('captchaimg');
            img.src = 'captcha_code_file.php?rand=<?php echo(rand()); ?>';
            document.getElementById ("captchaimg").src = img.src;
            //alert("some alert.");

        }

页面是here

【问题讨论】:

  • 能否提供js代码?
  • 检查开发者控制台是否有错误
  • @alexeypalamar 抱歉 - 打算添加详细信息,但在我到达帖子末尾时忘记了。请查看已编辑的问题。
  • @LeeTaylor 一直在控制台和萤火虫中,但没有错误 - 一切正常。我找不到图像不刷新的原因。我敢肯定,一旦我得到它,它会很明显,但是atm令人困惑。大多数提出相同(或相似)问题的人都用同样神秘的术语来描述它,而我还没有找到答案,或者我自己也想弄清楚......:/
  • 尝试删除此图像并使用新的 src 代替此图像添加其他图像。

标签: javascript php refresh captcha


【解决方案1】:

尝试使用这个,随机的不是php,而是JS。

function refresh_captcha()
    {
        var img = document.getElementById('captchaimg');
        img.src = 'captcha_code_file.php?rand=' + Math.random();
        document.getElementById ("captchaimg").src = img.src;
        //alert("some alert.");
    }

【讨论】:

  • 成功了!唯一的问题是,我认为它不如使用 php 添加随机化安全。这是在其他帖子中多次提到的一点......
  • > 我认为它不如使用 php 添加随机化安全。不,可能不是您以错误的方式编写 php 代码吗?你能提供你的php代码吗?
  • 当然 - &lt;?php echo(rand()); ?&gt;
  • 尝试研究已经创建的验证码示例。例如:webcheatsheet.com/php/create_captcha_protection.php 我觉得你对这种机制有误解。
  • 感谢您的建议。我现在正在查资料。我之前浏览过这些信息,但我承认这只是粗略的。我应该进一步考虑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 2021-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多