東京ウェブ制作ブロマガ

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 (税込)

コメント

コメントはまだありません
コメントを書き込むにはログインしてください。

いまブロマガで人気の記事

継続入会すると1ヶ月分が無料です。 条件を読む

東京ウェブ制作チャンネル

東京ウェブ制作チャンネル

月額
¥550  (税込)
このチャンネルの詳細