PHP フォーム入力された文字エスケープ

PHPでフォームを作る場合、INPUTやTEXTAREAを使いますが、そこから受け取る内容はエスケープする必要があります。受け取ったまま表示したり、DB登録なんかをしてしまうと、思わぬトラブルにみまわれることになります。

最低でも以下の4つはエスケープが必要。

& → &
< → < > → >
” → "

PHPでのエスケープ関数サンプル。

// 入力値表示エスケープ
function invalueescape($str) {
    $str = preg_replace('/&/','&amp;',$str);
    $str = preg_replace('/</','&lt;',$str);
    $str = preg_replace('/>/','&gt;',$str);
    $str = preg_replace('/"/','&quot;',$str);
    return $str;
}

POST送信などで受け取った値(仮に$post_val)をエスケープするには、上記のファンクションを記述したファイル内で、以下のようにします。

$post_val = invalueescape($post_val);

参考サイト
http://hodade.adam.ne.jp/itmemo/index.php?WEB%2FPHP%2F%A5%D5%A5%A9%A1%BC%A5%E0%C6%FE%CE%CF%C3%CD%A4%CE%A5%A8%A5%B9%A5%B1%A1%BC%A5%D7

投稿日:
カテゴリー: php

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です