-1

isert ステートメントで直接使用される $_POST 値の使用について読んでおり、これがトラブルの誘因であることを理解しています。私が読んだ投稿で明確でないのは、フォームが7つのアイテムをmysqli挿入スクリプトに送信していて、投稿された値を次のように使用しているとします。

    $stmt = $mysqli->prepare("INSERT INTO `advertisements` (`from`, `r_u_res`, `email`, `blockname`, `floorno`, `doorno`, `content`) VALUES (?, ?, ?, ?, ?,?,?)");
    $stmt->bind_param('sssssss', $_POST['from'], $_POST['rures'], $_POST['email'], $_POST['blockname'], $_POST['floorno'], $_POST['doorno'], $_POST['content']);

    $stmt->execute(); 
    $stmt->close();

それはそれを行う正しい方法でしょうか?または、投稿された値を最初に新しい変数に保存し、バインド中にその変数を使用する必要がありますか? - このような :

    $postedfrom = $_POST['from'];
    $postedrures = $_POST['rures'];
    $postedemail = $_POST['email'];
    $postedblockname = $_POST['blockname'];
    $postedfloorno = $_POST['floorno'];
    $posteddoorno = $_POST['doorno'];
    $postedcontent = $_POST['content'];

    $stmt = $mysqli->prepare("INSERT INTO `advertisements` (`from`, `r_u_res`, `email`, `blockname`, `floorno`, `doorno`, `content`) VALUES (?, ?, ?, ?, ?,?,?)");
    $stmt->bind_param('sssssss', $postedfrom, $postedrures, $postedemail, $postedblockname, $postedfloorno, $posteddoorno, $postedcontent);

    $stmt->execute(); 
    $stmt->close();      

OO mysqli プリペアド ステートメント ヘルプ プリーズの投稿を見ましたが、答えは上記のコードのようですが、最初のコードのように実行するとセキュリティの問題が発生するかどうかを知りたいです...

4

1 に答える 1

0

php は最初に へのメソッド呼び出しで渡される値を解決するため、両方の形式はセキュリティの観点から同等です$stmt->bind_param。したがって、その関数は両方の場合でまったく同じ値を認識します。

ps: どちらのスニペットも問題ないように見えます。

于 2013-07-08T12:58:30.393 に答える