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

时间:2012-11-15 18:04:11

标签: php javascript jquery

我一直在和jQuiz一起进行测验:http://www.fatihacet.com/lab/jQuiz/

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

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

在jQuiz.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();
        })

我试过

$Count = var results;

if($Count >= "90")
{
   $award = $db->exec("UPDATE users SET test='passed' WHERE username='$username'");
} 

我觉得我有正确的想法,但我只是缺少一些关键的东西,因为它不起作用或做任何事情。感谢您给我的任何指导或帮助。

1 个答案:

答案 0 :(得分:1)

你是从错误的角度来看这个。

  1. 如果他们有技术头脑,那么很容易有人假装通过你的测验。他们需要做的就是启动浏览器的开发人员工具并编辑页面上的数据。您最好使用不依赖于客户端信任数据的东西。当然,这可能只是一个轻浮的测验,如果用户通过或不通过它并不重要。
  2. 当PHP在服务器上运行时,JavaScript在客户端上运行。他们不能以这种方式共享变量。您需要以某种方式将分数发送到服务器。 This question可能是一个很好的起点。
  3. 还请确保$ username来自您信任的来源(即不是客户)。否则你需要担心SQL注入。即使你相信它,你也需要确保它不包含撇号。你应该真的使用prepared statements/parameterised queries