0

データのエスケープ、または少なくともそれに関連するコードのクリーンさに関して少し問題があります。

たとえば、「FirstName」という名前のテキストフィールドをエスケープしているとすると、次のようになります。

$FirstName = mysqli_real_escape_string($link, $_POST['FirstName']);
$FirstName = preg_replace( "/[<>#$%]/", "", $FirstName);
$FirstName = preg_replace('/\s\s+/', ' ', $FirstName);

とにかく、最後の2行をある種のループに入れることができますか?次のようにしましょう:

foreach($_POST as $name => $value)
{
    $value = preg_replace( "/[<>#$%]/", "", $value);
    $value = preg_replace('/\s\s+/', ' ', $value);
}

後でやらなければならないのは

$FirstName = mysqli_real_escape_string($link, $_POST['FirstName']);

$ _POST ['FirstName']はすでに他の文字を取り除いていますか?

4

1 に答える 1

2

もちろん。次のforeachように、値によるループではなく、参照によるループを作成します。

foreach($_POST as $name => &$value)
{
    $value = preg_replace( "/[<>#$%]/", "", $value);
    $value = preg_replace('/\s\s+/', ' ', $value);
}

の前のアンパサンドに注意してください$value。つまり$value、配列を反復処理するときに取得するのは、その値のコピーではなく、配列自体の値への参照です。

于 2012-08-25T02:57:37.100 に答える