●入力画面
コントローラ:
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タグが無効化されたことを意味する。
表示例