1

複数のフィールドから HTML コードを取り除きたい。だから私は使用しました:

extract($_POST)

次に、テーブルへの挿入。

次のように各フィールドを削除しません。


$user  = strip_tags($user);
$email = strip_tags($email);
.....

私の抽出($ _POST)配列を取り除く解決策はありますか?

mysql_real_escape_string() についても同じ

編集 1 私は使用しません

foreach($_POST as $key => $value){
  $_POST[$key] = mysql_real_escape_string(strip_tags($value));
}

短い変数を使用したい:

$名前、$メール

いいえ:

$_POST['name'] , $_POST['email']

非推奨であるため、extract() なし。

編集2解決策は次のとおりです。

foreach($_POST as $key => $value){
  $$key = mysql_real_escape_string(strip_tags($value));
}
4

3 に答える 3

3

array_map()特定の配列の各要素にコールバック関数を指定するために使用できます。

$_POST = array_map("strip_tags", $_POST);

編集:ユーザー入力をエスケープしようとしている理由を指定する必要があるかもしれません。たとえば、PHP には、データベースに追加される値をエスケープしたり、ページに表示される値をエスケープしたりするための特定の支援機能があります。前者は SQL インジェクションを引き起こし、後者は XSS 脆弱性を引き起こす可能性があります。

于 2011-01-29T14:08:34.057 に答える
2

このコードが必要だと思います

foreach($_POST as $key => $value){
   $$key = strip_tags($value);
}

//The insertion here
insertion();   

foreach($_POST as $key => $value){
   $_POST[$key] = strip_tags($value);
   }

extract($_POST);

//The insertion here
insertion();

その後、すべての投稿フィールドが strip_tagged になりました

于 2011-01-29T14:31:20.857 に答える
1

PHP が提供するフィルタリング関数を使用します。特にこの場合は、次のことに興味がありますfilter_input_array

$filtered = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRIPPED);
于 2011-01-29T14:15:59.853 に答える