首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用PHP进行验证码检查时出现错误结果

使用PHP进行验证码检查时出现错误结果
EN

Stack Overflow用户
提问于 2012-07-25 22:23:15
回答 2查看 548关注 0票数 0

我将在我的表单中有一个验证码,如果验证码输入正确,则提交。我正在使用jQuery AJAX发送输入的代码进行匹配检查。但是无论输入的验证码是否正确,我在jQuery中都得到了相同的结果。

如何在验证码检查中解决这个问题并得到正确的结果?

下面是我的代码,包括PHP和jQuery:

PHP (generateimage.php):

代码语言:javascript
运行
复制
header('Content-type:image/jpeg');
$text = rand(100000, 999999);

...

if (isset($_POST['check_capcha'])) {
  $check =$_POST['check_capcha'];
  if ($check == $text) {
    echo true;
  }
}

jQuery:

代码语言:javascript
运行
复制
var check_capcha = $("#human_check_sub").val();
check_capcha = parseInt(check_capcha);
$.post("../php/generateimage.php", {check_capcha:check_capcha}, function(data) {
  if (data) {
    //$.post("../php/core.php");
    alert("ok sub");
  } else {
    $("#img_cap_sub").attr("src", "../php/generateimage.php");
    $("#caution_sub").html('<span>Capcha entered incorrect.try again</span>');
  }
});
EN

回答 2

Stack Overflow用户

发布于 2012-07-25 22:27:03

您可能需要在$.post调用中将第一个check_captcha放在引号中:

代码语言:javascript
运行
复制
 $.post("../php/generateimage.php",{"check_capcha":check_capcha},function(data){

如果你仔细想想,JS会使用check_captcha的值作为键和值,所以你的php页面可能不会使用它。

编辑:对不起,我没有看到上面Marc B的评论,我不得不同意他的观点,你应该生成一个单一的值,将它保存在请求(会话)中的某个永久位置,然后引用该数字,否则将生成两个随机数,并且不应该匹配(如果它们匹配,那将是非常糟糕的)

  • Ken
票数 0
EN

Stack Overflow用户

发布于 2012-07-25 22:32:02

看起来您为每个ajax请求生成了一个新的capcha,包括在验证尝试时。当您执行验证检查而不是生成新映像时,请跳过rand调用。在生成它时,将正确的值存储在会话变量中,或者在传递带有尝试答案的check_capcha参数时进行检查。

目前,if语句几乎肯定会返回false

就像这样

代码语言:javascript
运行
复制
    session_start();

    if(!isset($_REQUEST['check_capcha']))
    {
        $_SESSION['correct'] = rand(100000, 999999);
        ...
        ...
        ...
    }
    else
    {
        if($check == $_SESSION['correct'])
        {
            echo true ;
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11651956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档