• このエントリーをはてなブックマークに追加
CakePHPでフォームから入力される文字列内のHTMLタグを無効化する
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

CakePHPでフォームから入力される文字列内のHTMLタグを無効化する

2013-04-28 07:30
    ●入力画面
    コントローラ:
      public function index130428c() {
    $this->set("title_for_layout","東京ウェブ制作けいく130428c");

    } // end of function


    ビュー: ファイル名 index130428c.ctp
    <h1>名前を登録する</h1>
    <p>本名をフルネームで入力してください</p>
      <?php echo $this->Form->create(false,array('type'=>'post','action'=>'./form03')); /* CakePHP ver2.1 以降では、null ではなく false を設定する。*/ ?>
    <h1>お名前</h1><?php echo $this->Form->text('text1'); ?>
    <br/><br/><p>例)大和 賢一郎</p><hr><br/><br/>
    <h1>お名前ふりがな</h1><?php echo $this->Form->text('text2'); ?>
    <br/><br/><p>例)やまと けんいちろう</p><hr><br/><br/>
        <?php echo $this->Form->end(" 確認画面へ進む "); ?>


    ●表示画面
    コントローラ:
    public function form03(){

    $text1 = $this -> data["text1"];
    $text1 = strip_tags($text1); // HTMLタグを除外する
    $this -> set("text1", Sanitize::stripAll($text1));

    $text2 = $this -> data["text2"];
    $this -> set("text2", Sanitize::stripAll($text2));
    } // end of function



    ビュー ファイル名 form03.ctp
    <h1>I am form03.ctp</h1>
    <p>text1はHTMLタグが除外されます。text2はHTMLタグが効きます。</p>
    <p>text1: <?php echo $text1; ?></p>
    <p>text2: <?php echo $text2; ?></p>


    ●解説
    フォームから入力された文字列を画面に表示する際、
    text1にのみ strip_tags を適用している。これを適用すると、
    text1のフィールドから入力された文字列にHTMLタグが含まれていたとしても
    そのタグが無効化され、効かなくなる。
    一方、text2のほうは、strip_tags を適用していないため、HTMLタグが画面に
    そのまま有効状態で表示されるので、HTMLタグが効く。

    ためしに、text1 と text2 の両方に
    <a href="#">hoge</a>
    と入力してみると、text2のみリンクになり、text1では非リンクになる。
    これはtext1のaタグが無効化されたことを意味する。


    表示例



    チャンネル会員ならもっと楽しめる!
    • 会員限定の新着記事が読み放題!※1
    • 動画や生放送などの追加コンテンツが見放題!※2
      • ※1、入会月以降の記事が対象になります。
      • ※2、チャンネルによって、見放題になるコンテンツは異なります。
    ブログイメージ
    東京ウェブ制作ブロマガ
    更新頻度: 不定期
    最終更新日:
    チャンネル月額: ¥550 (税込)

    チャンネルに入会して購読

    コメントを書く
    コメントをするにはログインして下さい。