0

私はMySQLConverterTool自分のWebアプリケーションを変換するために使用していますが、

私が直面した最初の問題は、コードが大きくなることです。それが何を意味するのかさえ理解できませんか? 以前は非常に小さなコードでしたが、今では大きすぎることがわかりました。

//old code
$ask_id = mysql_real_escape_string($_POST['ask_id']);

//after convert
$ask_id = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $_POST['ask_id']) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));

正常に動作していますが、正しい方法であるかどうか、mysqli_*またはインラインで修正する必要がある問題やバグがあるかどうかを知りたいですか?

この部分を安全にする方法も知りたい

if (isset($_POST['asking-money'])) {
    $dailyBonus = 10000;
    $update = mysqli_query($GLOBALS["___mysqli_ston"], "UPDATE users SET ask_time='$newtime', bonus='dailyBonus'  WHERE id='$userid'");
// some more calculation
}
4

3 に答える 3

2

mysqli_* 部分については、mysql_* で行われていたことのほとんどは、新しいプレフィックスでほぼ同じままなので、おそらく問題はなく、安全にする方法については、すべてを評価して準備するだけです。パラメータは、クエリで使用する前にユーザーから渡されます。つまり、どのような場合でも、ユーザー入力をクエリで直接使用しないでください。それ以外は、コードは私には非常に良いようです。

于 2013-09-24T17:03:48.593 に答える
2

コードの最初のビットは、使用している変数が少なくとも設定されていることを確認するために巨大な 3 項ステートメントを (全体的に) 追加したように見えますが、それ以外は使用できるはずです。

mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $_POST['ask_id'])

SQL クエリのセキュリティについては、変数を直接クエリするのではなく、Prepared Statements を使用してみてください

mysqli_prepare

于 2013-09-24T17:02:05.020 に答える
0

最初のコードは3 項ステートメントです (if/else の略)。やりすぎです、私の意見。

PDOをお勧めします。使用できる場合は、準備済みステートメントです。とても安全で扱いやすいです。

ところで: を避けるようにしてくださいMySQLConverterTool。数か月後にこのコードを理解するのは困難です。賢く、シンプルに_ _ _ :-)

幸運を!

于 2013-09-24T17:06:37.003 に答える