【问题标题】:PHP: Reloading the captcha image from javascriptPHP:从 javascript 重新加载验证码图像
【发布时间】:2023-11-17 03:13:02
【问题描述】:

我在 PHP 中有一个用户注册表单。我在页面中放置了验证码图像检查。我是这样使用它的

<img src="captcha.php" alt="Enter this text in the adjacent text box" id="imgCaptcha" />

并且在我的 javascript 中,我将使用在图像中生成的相同数字(来自 captcha.php 页面)来验证这一点。该数字也在会话变量中设置。现在我想从我的 javascript 将图像重新加载到另一个图像,如果验证失败。有什么办法吗?

在我的 captcha.php 页面中,我随机创建一个数字,然后使用 imagejpeg 创建一个图像。我也将此数字(在图像中)设置为会话变量

请指导我解决这个问题

提前致谢

【问题讨论】:

  • 您可能希望将 Alt 属性更改为 Title。如果无法加载图像,或者用户专门禁用了图像加载,则会显示替代文本。在这种情况下,用户将无法阅读验证码图像并在相邻的文本框中输入任何内容。还是您真的希望用户在文本框中输入“在相邻文本框中输入此文本”? (我知道你不知道,但如果你使用 Alt 而不是 Title,这会让人感到困惑)

标签: php captcha


【解决方案1】:

您需要使用 ajax 将captcha.php 注入到页面中。有几种方法可以做到这一点:

  • javascript 使用 XHR 但这可能会很痛苦。 Here 就是一个例子。
  • jQuery 提供了一种简单的方法来执行此操作,例如:

    $('#someButton').click(function() { $('#someDiv').load('captcha.php'); });

  • prototype.js 有点冗长,但可以胜任。 Example.

我建议使用 jQuery,文档中有 great examples

如果您的注册页面返回验证错误,则无需使用 javascript 来重新加载验证码,这应该会自动发生。

【讨论】:

  • 很棒的答案。 +3(哦,但只有一个重要;))