0

一部のユーザー入力をサニタイズします。

function html_mysql_sanitise($data) {
  if(get_magic_quotes_gpc()) {
    $data = stripslashes($data);
  }
  $data = htmlentities($data, ENT_QUOTES);
  $data = htmlspecialchars($data, ENT_QUOTES);
  return mysql_real_escape_string($data);
}

$_POST['data'] = html_mysql_sanitise($_POST['data']);

echo $_POST['data'];
echo html_entity_decode(htmlspecialchars_decode($_POST['data']));
echo html_entity_decode($_POST['data'], ENT_NOQUOTES);
echo htmlspecialchars_decode($_POST['data'], ENT_NOQUOTES);

$_POST['data'] が設定されています。

test<d#'!;ta>

これの出力は次のとおりです。

test&lt;d#&#039;!;ta&gt;
test
test<d#'!;ta>
test<d#'!;ta>

最後の 2 つの結果が同じで、2 番目の結果が投稿されたデータの一部であるのはなぜですか? 最後の 2 つは目的の結果を生成しているように見えるので、どちらを使用すればよいですか?

ありがとうございました。

4

1 に答える 1

1

なぜ車輪を再発明するのですか...これを使用してください:

http://htmlpurifier.org/docs

またはこれ:

http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed/index.php

どちらもあなたがやりたいことを正確に得意としています。

于 2012-10-15T15:43:01.270 に答える