コードイグナイター バリデーション
フォームのバリデーションとは?
フォームを作る場合、必ずバリデーションやサニタイズをする必要があります。つまり、入力された値の検証が必要です。
では、フォームバリデーションについて考えてみましょう。
フォームを作る時に、考えておくこと
フォームを作る時に、考えておくことは、以下の事です。
1.フォームが表示される 2.入力して送信ができる 3.無効なものをチェックする。 エラーを表示する 4.確認ページに行き、送信完了。 |
大まかには、こんなイメージです。
受信側で必要な処理
1.必須項目のチェック 2.データの型を確認。 3.サニタイズする 4.データベスに挿入するためのクエリ発行 |
サニタイズ
サニタイズとは?
日本語では、「無害化」するという意味。サニタイズは、ユーザーの入力値を検証する仕組みです。
入力値が要件として正しい値か?をチェックします。
【参照】
https://qiita.com/rana_kualu/items/11cd41de5f0364ba2ee8
バリデーション
バリデーションで「値」をチェックする
想定していない値をチェックするための入力値検証。スクリプト攻撃を防ぎ、クエリを破壊されないようにします。
エラーメッセージ出すようにする。
以下のように使う事もできます。
<?php class Form extends CI_Controller { public function index()
{ $this->load->library('form_validation'); if ($this->form_validation->run() == FALSE) |
【参照】
https://codeigniter.jp/user_guide/3/libraries/form_validation.html
エスケープ
htmlspecialchars()
特殊文字を変換して、スクリプト攻撃されないようにする時に利用します。「<」「>」などの文字を特殊変換します。
これで、Javescriptによる攻撃(クロスサイトスクリプティング)を回避する事ができます。
htmlspecialcharsを利用することで、ユーザーによって、入力された特殊文字を「文字列」に変換してくれます。
シングルクォーテーション ・・・ 「 '」を「'」 ダブルクォーテーション ・・・ 「 " 」を「"」 アンド ・・・ 「 &」を 「&」に変換 小なり ・・・ 「 <」 を 「 < ;」 大なり ・・・ 「 >」を 「 > 」 |
【参照】
https://www.php.net/manual/ja/function.htmlspecialchars.php
スクリプトの事例 ⇊
https://www.leon-tec.co.jp/blog/yoshida/8214/
ちょっと知っていた方がいい、注意点
htmlspecialchars()した後の値をCSVなどに出力されたら文字化けします
ようこそ、<?=htmlspecialchars($_REQUEST['name'], ENT_QUOTES, 'UTF-8'); ?>さん。 |
と出力部分に入れておくと、エラーがおきずらくなります。
しかし、フレームワークはHTMLエスケープ機能を持っているので、htmlspecialchars()ではなくフレームワークに沿った出力方法を行いましょう。
【参照】
https://qiita.com/rana_kualu/items/11cd41de5f0364ba2ee8
何が必要か?
コードイグナイターでフォームを作るには?
以下が必要になります。
・フォームを持つ ビュー ファイル。 ・送信成功時に表示される「成功」メッセージを含む ビューファイル。 ・送信されたデータを受信および処理する コントローラ メソッド。 |
が必要になります。
これらを作っていきましょう!!
コードの説明
codeigniterでは自動的にpostデータをバリデーションします。
$this->load->library('form_validation'); [
'field' => 'name',
$this->form_validation->set_rules($config);
if ($this->form_validation->run() === TRUE) { } |
フォームヘルパーのファイルは、フォームをを処理するのに 役立つ関数
ヘルパーを使って、まずはロードして、使えるようにします。
$this->load->helper('form'); |
フォームを生成するタグ
<?php echo form_open('form'); ?> |
<form method="post" accept-charset="utf-8" action="http://locallhost/index.php/form/">
を参照するフォームタグを生成してくれます。
【参照】
https://codeigniter.jp/user_guide/3/helpers/form_helper.html
Viewでエラーを表示する
全てのエラーを 「表示」 する場合に利用
<?php echo validation_errors(); ?> |
個別でエラーを表示する場合
<?php echo form_error('name'); ?> |
このように書きます。
コントローラでエラーを取得する場合
全てのエラーを取得する
$errors = $this->form_validation->error_array(); |
個別でエラーを取得する
$errors = $this->form_validation->error('name'); |
エラーを日本語にする場合
application/config/config.phpでlanguageをjapaneseに変更する。
$config['language'] = 'japanese'; |
【参照】
http://www.ci-guide.info/practical/library/form_validation/
次に、ルールを保存します
application/config/ フォルダに form_validation.php という名前のファイルを作成します
参照
【参照】
コードイグナイターのエラー構文を知りたい
http://www.ci-guide.info/practical/library/form_validation/
大変申し訳ありませんが、当社ではサービスの質を落とさないために、月の契約は5件までとさせていただいております。 契約をお待ちいただく可能性もございますので、ご了承のほどよろしくお願いいたします
コードイグナイターの勉強方法
■ 基本編 ■
クエリ結果を作る
Active Recordとは?
クエリヘルパー関数
■ フレームワーク ■
フレームワークは何を使ったらいいのか?
ララベルとは?
コードイグナイターとは?
オートロードとは
無名関数とは?
MVCとは何か?
■ オブジェクト指向■
クラス・インスタンス・プロパティ
オブジェクト指向とは?
この記事を読んだ人は、こんな記事も読んでいます
SEO対策の基本 外部要因とは?
SEO対策の基本的である、外部要因とは何か?
SEO対策をするなら絶対に知っておきたい、基本知識です。
売れるサイトを作るのに知って起きたい知識
サーチエンジンマーケティングという言葉をご存知でしょうか?
ホームページで商品やサービスを売る時に知っておきたいマーケティング
についてご紹介いたします。
SEO対策をする5つのメリットとは?
なぜ上位表示させることが大事なのか?なぜSEO対策をする必要があるのか
についてご紹介させていただきます。
SEO対策の内部要因とは?
上位表示させるためには、内部要因について知っておくことも大事です。
キーワードを上位表示させるために必要なのは、ソースコードを最適化することです
内部要因の対策について知りたい方はこちらへ
キーワード対策をする前に
そのキーワード対策。ちょっと待ってください。
そのまま対策をすると、必ずお金を損してしまいます。個人事業主や中小企業は
そんな大きなキーワードで対策をしてはいけません。
広告費用が高くなる本当の理由とは?
売れないサイトに集めていませんか?広告費用がかかるわりには
お問い合わせが少ない・・・と感じる方は多いはずです。
購入率の悪いサイトに集客をしている可能性があります。