fc2ブログ

PREV | PAGE-SELECT | NEXT

フォームのデータを受け取りエスケープして変数に入れる

フォーム(form)からデータを受け取る場合、一般的に$_POST['name']といった形でうけとります。
$name = $_POST['name'];といった形で使うケースもあるでしょう。
ただ、問題なのは$_POST['name']に悪意有るタグが含まれる場合もあり、そのまま使っているプログラマーはあり得ないほどセキュリティに興味がない人となります。
そこで、単純ですが使いやすい形で受け取りの形を作ってみました。


  • エスケープできるタグは全てエスケープする
  • どのサーバーでも使えるようにget_magic_quotes_gpc()を調べて使い分ける
  • 送られてきたフォームの名前をそのまま変数名に直して代入する。


    //POSTデータを全て受け取りエスケープして変数に入れる
    foreach($_POST as $k => $v) {
    if(get_magic_quotes_gpc()) {
    $v=stripslashes($v);
    }
    $v=htmlspecialchars($v);
    $array[$k]=$v;
    }
    extract($array);



    例えば次のようなフォームからデータが送られてきた場合

    <form name="form1" method="post" action="index.php">
    <input type="text" name="namae">
    <input type="text" name="tel">
    <textarea name="coment"></textarea>
    </form>



    name=namaeとname=telとname=comentとあります。

    この場合は上のPHPを実行すると
  • $nameにnamaeのデータが代入されます
  • $telにtelのデータが代入されます
  • $comeにcomeのデータが入力されます。

  • しかもフォームの数が多くても、上記PHPを表示するだけで、全てタグを無効にして、さらに全て変数に自動的にいれてくれる便利物です。


    スポンサードリンク

    | フォームデータ加工 | comments:2 | trackbacks:0 | TOP↑

    参考になりました

    大変参考になりました。ありがとうございます。
    TBさせていただきますね。

    | muzin | 2007/03/27 19:51 | URL | ≫ EDIT

    管理人のみ閲覧できます

    このコメントは管理人のみ閲覧できます

    | | 2007/06/07 01:22 | | ≫ EDIT















    非公開コメント

    http://phpnet.blog91.fc2.com/tb.php/6-6a23db21

    PREV | PAGE-SELECT | NEXT