Php 将测试分数结果传递给mysql查询

Php 将测试分数结果传递给mysql查询,php,javascript,jquery,Php,Javascript,Jquery,我一直在把一个小测验和JQUITE放在一起: 如果你参加考试,你会看到它以90/100的形式显示你的分数(它只有四个问题) 如何将用户获得的分数传递给变量,然后执行sql和IF语句 在jquick.js文件的底部有以下代码: $('.btnShowResult').click(function(){ $('#progress').width(300); $('#progressKeeper').hide(); var re

我一直在把一个小测验和JQUITE放在一起:

如果你参加考试,你会看到它以90/100的形式显示你的分数(它只有四个问题)

如何将用户获得的分数传递给变量,然后执行sql和IF语句

在jquick.js文件的底部有以下代码:

 $('.btnShowResult').click(function(){
            $('#progress').width(300);
            $('#progressKeeper').hide();
            var results = jQuiz.checkAnswers();
            var resultSet = '';
            var trueCount = 0;
            for (var i = 0, ii = results.length; i < ii; i++){
                if (results[i] == true) trueCount++;
                resultSet += '<div> Question ' + (i + 1) + ' is ' + results[i] + '</div>'
            }
            resultSet += '<div class="totalScore">Your total score is ' + trueCount * 20 + ' / 100</div>'
            $('#resultKeeper').html(resultSet).show();
        })

我觉得我的想法是正确的,但我只是错过了一些关键的东西,因为它不起作用或做任何事情。谢谢你给我的指导和帮助

你从错误的角度来看这个问题

  • 如果有人有技术头脑,他们很容易假装通过了你的测验。他们所需要做的就是启动浏览器的开发工具并编辑页面上的数据。您最好使用不依赖于来自客户的可信数据的东西。当然,这可能只是一个无聊的测验,用户是否通过并不重要
  • JavaScript在客户机上运行,而PHP在服务器上运行。他们不能以这种方式共享变量。您需要以某种方式将分数发送到服务器。也许是个好的开始

  • 还请确保$username来自您信任的来源(即,不是客户端)。否则,您需要担心SQL注入。即使你相信它,你也需要确保它不包含撇号。你真的应该使用。

    看看这个,你能不能做点像
    $Count=trueCount*20
    ?因为这似乎是实际给出总分的原因,而不是
    结果
    ,所以我要通过测试所要做的就是伪造ajax请求并将count=91传递给服务器?
    $Count = var results;
    
    if($Count >= "90")
    {
       $award = $db->exec("UPDATE users SET test='passed' WHERE username='$username'");
    }