CodeIgniterのフォーム送信

フォームを使った値の受け渡しをしてみましょう。『applicaiton/views』に『form_post』というviewのフォームを作成します。

ビューの作成

今日はDreamweaverCS5.5でコードを作成してみます。『ファイル→新規→空白ページ→PHPで『作成』ボタンをクリックします。viewを主体に作成するときは、やはりDreamweaverが使いやすいです。『フォームの送信』と入力して、プロパティのフォーマットを見出し1を選択します。

『フォームの送信』の文字の下をクリックし、ファームタブのフォーム作成アイコンをクリックします。

フォームの赤い枠の先頭にカーソルを移動し、フォームタブの『テキストフィールド』をクリックし、テキストフィールドを作成します。

作成されたテキストフィールドの後ろで改行して、フォームタブの『ボタン』アイコンをクリックすると、送信ボタンが作成されます。

フォームタブの外にカーソルを移動し、コードを直接変更します。『&nbsp;』→『<?=$msg;?>』に変更します。デザイン画面のカーソルの位置に『PHP』のアイコンが表示されます。

コントローラの作成

続いてコントローラを作成します。ファイル→新規→その他→テキストで『作成』ボタンをクリックします。

以下のコードを記入して、『aplication/controllers』フォルダに『form_post.php』の名前で保存します。

class Form_post extends CI_Controller{
function index()
{
if($this->input->post('textfield') != null){
$str='<p>送信内容:'.$this->input->post('textfield').'</p>';
}else{
$str='<p>メッセージをどうぞ</p>';
}
$data=array('msg'=>$str);
$this->load->view('form_post',$data);
}
}

それではブラウザで確認してみましょう。『http://localhost/CodeIgniter/post_form』と入力します。テキストフィールドに文字を入力して、送信ボタンをクリックします。

テキストフィールドに入力した値が送信ボタンの下に表示されました。

$this->input->post()

今日使用したコードの『$this->input->post()』を説明します。このコードは、CodeIgniterの『入力クラス』と呼ばれるライブラリの一つです。使い方は、$this->input->post(第1引数、第2引数)で第1引数にはpostされた項目の名前、第2引数は、オプションでTRUEかFALSEを指定します。TRUEを指定すれば、XSSフィルタリングが行われます。初期設定では、FALSEに設定されているので、省略すると『FALSE』が選択されます。

XSSフィルタリングとは、クロスサイトスクリプティング攻撃を防止するためのフィルタです。CodeIgniterには、このXSSフィルタリングが内蔵されていますが、処理がやや重いため、デフォルトでは自動的に適用されるようになっていません。XSSフィルタリングは、許可されない文字列を削除し、HTMLの文字参照に変換することで、XSSが起きない文字列を返します。

POST及びCOOKIEデータの全てに自動的にXSSフィルタリングを適用したい場合は、『application/config』フォルダのメイン設定ファイル(config.php)の282行目のFALSEをTRUEに変更します。こうすれば、第2引数を省略したときに、『TRUE』が選択されます。

本日はここまでにします。

このエントリーを含むはてなブックマーク Buzzurlにブックマーク livedoorクリップ Yahoo!ブックマークに登録

トラックバック&コメント

この投稿のトラックバックURL:

コメントをどうぞ

このページの先頭へ