0

私はjQuizと一緒にクイズを作成しています:http://www.fatihacet.com/lab/jQuiz/

テストを受けると、最後に90/100の形式でスコアが表示されます(質問は4つだけです)。

ユーザーが取得したスコアを変数に渡して、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 に答える