0

我一直在与 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'");
} 

我觉得我的想法是正确的,但只是错过了一些至关重要的东西,因为它没有工作或做任何事情。感谢您给我的任何指导或帮助。

4

1 回答 1

1

你是从错误的角度来的。

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

还请确保 $username 来自您信任的来源(即不是客户端)。否则你需要担心 SQL 注入。即使您信任它,您也需要确保它不包含撇号。你真的应该使用准备好的语句/参数化查询

于 2012-11-15T18:26:10.887 回答