ウェブからの入力は、そのまま保存したり扱ったりするのは危険です。例えば、次のようなフォームを作成します。
<form action="input.php" method="post">
<input type="text" name="message"> <button type="submit">送信</button>
</form>
この時、例えば「<script>…</script>」など、JavaScriptを送信するとそのまま実行されてしまい危険です。そこで、これをフィルタリングします。
<?php
$message = filter_input(INPUT_POST, 'message', FILTER_SANITIZE_SPECIAL_CHARS);
これにより、$messageには影響のある文字列が置き換えられて返されます。第3パラメーターで、さまざまな種類のフィルターをかけることができます。
FILTER_SANITIZE_EMAIL – メールアドレス
メールアドレスとして利用できる文字(英字、数字および !#$%&’*+-=?^_`{|}~@.[])以外を除去します
FILTER_SANITIZE_NUMBER_INT – 整数
整数以外の文字列を除去します
FILTER_CALLBACK – コールバック
自分でフィルターのファンクションを制作することができます。
例)
function trimString($value)
{
return trim($value);
}
$loginname = filter_input(INPUT_POST, 'loginname', FILTER_CALLBACK, array('options' => 'trimString'));
その他のフィルターは以下を参照してください