0

私はアマチュア Web 開発者であり、主に JavaScript を使用するアプリケーションを開発していますが、PHP/MySQL を使用する必要があるのは、それがクイズ アプリケーションであり、「ソースの表示」に移動してすべてのクイズの回答を表示したくないためです。関連するページは、index.html、problems.php、functions.js です。index.html はメインのクイズ ページです。problems.php は、サーバーに接続し、クイズ ページの質問に対する回答を取得するために使用されるページです。また、functions.js は、アプリに何かを実行するよう促すその他の事柄の中で、回答が正しいかどうかを確認するために使用されます。

index.html:

<?php
    include ("problems.php");                                    
?>
...

問題.php

<?php
    // Connect to server
    $con = mysql_connect("XXXXXXXXXXXXX", "XXXXXXXXXXX", "XXXXXXXXXXXX");
    mysql_select_db("problems", $con);
    if (!$con) {
         die("Didn't connect");
    }
    $question_num = $_GET["num"];
    $sql = "SELECT question FROM questions WHERE num='" . $question_num . "';";
    $answer = mysql_fetch_array(mysql_query($sql))['question'];
?>

functions.js

function checkAnswer(ans, input) {
    if (ans == input) {
        alert("Correct!");
    }
}

私は PHP 開発者ではなく、PHP についてほとんど知りません (そのため、アプリケーションに JavaScript を使用することにしました)。しかし、クイズの質問への回答を取得する際に GET メソッドを使用したいと思います (ユーザーが [送信] をクリックすると、?num=1,2,3,4,5 に渡されます)。次に、データベースから取得したクイズの回答を functions.js の checkAnswer 関数に渡して、回答を確認します。私の問題は、JavaScript の関数に対する質問への回答のパスです。また、サーバーがコード内のデータベースに接続しているようにも見えません。

4

3 に答える 3

0

誰でも javascript ファイルを開いて覗くことができるので、答えを javascript に保存しないことをお勧めします。サーバー側ですべての回答チェックを行うことをお勧めします。

回答を GET または POST リクエストのパラメーターとしてサーバーに渡し、回答を取得してから、mysqli_* または PDO を使用して準備済みステートメントを作成し、回答が正しいことを確認します。

于 2013-01-20T18:10:25.073 に答える
0

次のようにしてこれを達成できます

手順

  1. ユーザーが入力した質問 ID と回答を PHP ページに渡す
  2. PHPページで回答を検証します
  3. 次に、答えに基づいて true/false を返します

これにはjQuery ajaxを使用することをお勧めします

$.ajax({
   url: "GetAnswerStatus.PHP?questionid=4&input=3"
}).done(function ( data ) {
   // data = true/ false
   console.log("Answer:" + data);
});

またはjQuery .getを使用します

$.get('GetAnswerStatus.PHP?questionid=4&input=3', function(data) {
    console.log("Answer:" + data);
});
于 2013-01-20T18:11:10.943 に答える
0

JavaScript を使用してクライアントに回答を取得すると、ユーザーはそれを見ることができます。回答をサーバーに送信し (例: ajax を使用)、そこで確認します (それが正しかったかどうかのみを返します)。

また、GET 値を mysql クエリに直接挿入することは、実際には安全ではありません。mysql_real_escape_stringのようなものを使用してください。

于 2013-01-20T18:13:40.237 に答える