- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- CodeIgniter バリデーション へ行く。
バリデーションとは? †
ユーザー「入力値」の妥当性を、システム側で「検証」し、適切に処理すること。
バリデーションとは【validation】(バリデート) - IT用語辞典
別名 :validate
検証(する)、実証(する)、認可(する)、妥当性確認、などの意味を持つ英単語。
ITの分野では、対象がその仕様や文法などに照らして適切に記述・構築されているか否かを検証すること、という意味で使われる。
リンク †
- CodeIgniter ユーザガイド 日本語版 › フォーム・バリデーション(検証)
http://codeigniter.jp/user_guide_ja/libraries/form_validation.html
- CodeIgniter Form
Formヘルパー(入力フォームの作成支援機能)の使い方
バリデーションクラス †
CodeIgniterで用意されているバリデーションクラスを利用して、ユーザーの入力値をチェックします。
処理の流れ †
- 入力ページ(フォーム)が表示されます。
- ユーザーが、入力して送信します。
- 間違ったデータが送信された場合や、必要項目が入力されていない場合、エラーメッセージを、入力したデータと一緒にフォームで再表示します。
- 送信データが正しい形式になるまで、上記の処理を繰り返します。
データを受け取るページで、入力値のチェック処理を行います。
- 必須入力のデータをチェックする。
- データが、正しいデータ型か?、データが条件に合致するか?等をチェックする。
(ユーザー名が送信された場合、許可した文字だけになっているか?等) - セキュリティのためにデータをサニタイズする。
- 必要であれば、前もってデータをフォーマットします。
(前後の余計な空白文字を除去する、等) - データベースに追加するデータを準備します。
フォームバリデーション(検証)の実装 †
次の3つのファイルを用意します。
ファイル | 内容 |
入力ページのビュー | 入力フォームを設置したビューファイル |
結果ページのビュー | 送信が成功したときに、「成功」"メッセージを表示するビューファイル |
コントローラー | 送信されたデータを受け取り、処理できるようにしたコントローラ内のメソッド |
入力ページ †
入力フォームのビューファイルを用意する。
applications/views/myform.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
結果ページ †
バリデーションの結果を表示するビューファイルを用意する。
applications/views/formsuccess.php
1 2 3 4 5 6 7 8 9 |
|
コントローラー †
入力ページを制御するコントローラーファイルを用意する。
applications/controllers/form.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
検証ルールを設定する †
バリデーションクラスのset_rules()メソッドを使って検証ルールを設定します。
$this->form_validation->set_rules();
set_rules()メソッドの引数 †
set_rules()メソッドに、3つの引数を指定します。
引数 | 引数の順番 | 内容 |
フォーム名 | 1番目 | フォームの name 属性に指定した値 |
フォームの表示名 | 2番目 | 「user」という入力フィールドの表示名として「名前」等 |
フォームに設定する検証ルール | 3番目 | 'required', 'max_length[12]'等、CodeIgniterで用意されている値 |
- 「フォームの表示名」は、エラーメッセージの表示で使われる。
- 「検証ルール」は、CodeIgniterが用意してくれた検証ルールだけではなく、コールバック関数を自作することによって、ユーザーが指定した検証ルールを適用させることもできる。
set_rules()メソッドの呼出し †
コントローラ (form.php) の中で、バリデーションクラスを初期化(ロード)した後、set_rules()メソッドを使います。
1 2 3 |
|
- CodeIgniterでは、指定したフィールドにどれだけ多くのルールを適用してもかまいません。
- ルールは順番に続けて適用することができ、同時にデータを整形したり前処理を行ったりすることもできます。
配列を使った検証ルールの一括指定 †
一回で全ての検証ルールを設定したい場合、set_rules()メソッドの引数を配列にします。
引数の配列は、検証ルール設定メソッドを通る配列の形式で記述しなければいけません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
ルールの連結(カスケード) †
set_rules()メソッドの、3番目の引数である「検証ルール」は、複数のルールを指定できます。
各ルールは「|」でつなげて記述します。
1 2 3 |
|
上記の例では、
- username フィールドは、5文字より小さくてはだめで、12文字を超えてはいけません。
- password フィールドは、パスワード確認フィールドと入力が一致しなければなりません。
- email フィールドは、正しいメールアドレスの形式でなければなりません。
というルールを追加してします。
データの整形 †
バリデーションの機能は、データの整形をすることもできます。
たとえば、以下のように、ルールを追加することができます。
1 2 3 |
|
上記の例では、
- トリミング(空白の除去)を行う
- パスワードを MD5 に変換する
- 悪意のあるデータを取り除く "xss_clean" 機能を通す
というルール(処理)を追加してします。
- データの整形を指定するルール名として、
htmlspecialchars、trim、MD5
などのような引数を1つだけとるPHPの組込み関数はどれでもルールとして使用することができます。
- もし入力エラーがあった場合、元のデータをフォームに表示させる必要があるため、検証が済んだ後に、データ整形をしたいのが普通の流れだと思います。
=データの整形は、使い方に注意!
入力フォームの再表示 †
エラーメッセージ表示 †
Formヘルパーのvalidation_errors()関数を使います。(Formヘルパーをロードしておかないと使えません!)
validation_errors()
この関数は、バリデーションクラスのバリデータが返すエラーメッセージを取得して、出力します。
メッセージがなければ、何も出力しません。
入力ページで、エラーメッセージを表示させる場所に、以下のように記述します。
|