我如何确定HTML形式的答案是否正确通过$ .post调用PHP而没有透露答案?

问题描述

我正在填写空白测验(current state)。在我的index.php中,我想验证用户input是正确的答案(例如,它与我的MySQL服务器中的内容匹配)。

我可以通过<?php echo ... ?>输入答案来验证答案是否正确,但这会导致答案在html文件中,这具有允许作弊的缺点。

我从this answer收集到,我需要使用类似$.post('file.php',{variable: variableToSend});的东西,所以我尝试这样做:

<script>
    function process_guess() {
        var input = [...snip...];

        [...snip...]

        var is_correct = $.post('process_answer.php',{guess: input});

        [...snip...]

        if(is_correct == 1) {
            [...snip...]
        }
        else {
            [...snip...]
        }
    }
</script>

我的index.php中其他地方的html形式调用了上述Javascript函数;我可以使用console.log来验证上面的input变量是实际的用户输入。但是,从console.log来看,我使用$.post的方式是完全错误的,但是我不确定正确的语法是什么。

process_answer.php中,我有:

<?php
    if($_POST['guess'] == $problem_data["answer"]) echo "1";
    else echo "0"; 
?>

我不确定如何从这里继续。

问题:如何确定HTML形式的答案是否正确(通过$ .post调用PHP)而没有透露答案?

解决方法

你的方法很好。进行ajax调用是一种很好的方法。

根据the documentation,在Javascript中,您只需要等待服务器响应。但是您必须注意,它是异步的(因此下面的代码可能会在回调之前执行)。我建议像这样。

$.post('process_answer.php',{guess: input})
  .done(function( data ) {
    // Execute your logic inside the request callback
    if(data) {
        [...snip...]
    }
    else {
        [...snip...]
    }
  }
);

在您的php中,我建议退出脚本或直接返回一个值

<?php
// return a json encoded boolean
header('Content-type: application/json');
echo json_encode($_POST['guess'] == $problem_data["answer"]);die;
?>

在菲尔评论后编辑:

Phil是对的,我已经更新了示例。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...