フォームの入力をフィルタリングする – filter_input

ウェブからの入力は、そのまま保存したり扱ったりするのは危険です。例えば、次のようなフォームを作成します。

  <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'));

その他のフィルターは以下を参照してください