(メール・URL・電話・郵便・IP) データ バリデーション

今回は、プロフィール情報に使用されるデータに絞ったバリデーションルールです。

バリデーションルール

以下の5つのバリデーションルールがコアに用意されています。

  • email メールアドレス
  • url URL
  • postal 郵便番号
  • phone 電話番号
  • ip IPアドレス

email (メールアドレス)

email(string $check, boolean $deep = false, string $regex = null)
第2引数$deepがtrueの場合、getmxrrもしくはcheckdnsrrもしくはgethostbynamelを使用してドメインの有無まで検証してくれます。第3引数$regexに正規表現を使用してドメインを限定してくれます。

public $validate = array(
    'mailaddress' => array(
        'rule' => array( 'email'),
//      'rule' => array( 'email', true),  // ドメイン有無を検証
//      'rule' => array( 'email', true, '\gmail.com\'),  // gmail.comのみ許可
        'message' => 'メールアドレスを入力して下さい。',
        'allowEmpty' => true              // 空白許可
    ),
);

url (URL)

url(string $check, boolean $strict = false)
http(s), ftp(s), file, news, gopherをサポート。第2引数$strict がtrueの場合、http://などプロトコルまで求めます。

public $validate = array(
    'website' => array(
        // プロトコルまで必要なし
        'rule' => array( 'url'),  // kwski.net
        // プロトコルまで必要
//      'rule' => array( 'url', true),  // http://kwski.net
        'message' => 'URLを入力して下さい。',
        'allowEmpty' => true	
    ),
);

postal (郵便番号)

アメリカ(us)、カナダ(ca)、イギリス(uk)、イタリア(it)、ドイツ(de)、ベルギー(be)の郵便番号のフォーマットが用意されているだけなので、日本版につくってみましょう。正規表現が使用できるcustomルールを使用します。

public $validate = array(
    'postal' => array(
        // ハイフン必須
        'rule' => array( 'custom', '/^[0-9]{3}-[0-9]{4}$/'),
        // ハイフンがあってもなくてもいい
//      'rule' => array( 'custom', '/^[0-9]{3}[\s-]?[0-9]{4}$/'),
        'message' => 'postal error',
        'allowEmpty' => true	
    ),);

CakePHP Localized pluginを参考にさせてもらいました。こちらのプラグインをインストールすれば、日本用の郵便番号のルールが使用できます。

phone (電話番号)

アメリカの電話番号フォーマットを検証 になるので、こちらも日本用にcustomを使用してつくってみましょう。電話番号は、様々なパターンがあると思うので、正規表現内の数字を変えつつ調整してもらったほうがいいと思います。
下の例では、
0xxx-xxxx-yyyy (xの個数は可変)
になります。

public $validate = array(
    'phone' => array(
        // ハイフン必須
        'rule' => array( 'custom', '/^(0\d{1,4}-\d{1,4}-\d{4})$/'),
        // ハイフンがあってもなくてもいい
//      'rule' => array( 'custom', '/^(0\d{1,4}[\s-]?\d{1,4}[\s-]?\d{4})$/'),
        'message' => 'phone error',
        'allowEmpty' => true
    ),
);

こちらもCakePHP Localized pluginに日本版が用意されています。

ip (IPアドレス)

ip(string $check, string $type = 'both')
第2引数$typeで、両方、IPv4のみ、IPv6のみを制限できます。

public $validate = array(
    'defaulgateway' => array(
        'rule' => array( 'ip', 'both'),  // 両方OK
//      'rule' => array( 'ip', 'IPv4'),  // IPv4のみOK
//      'rule' => array( 'ip', 'IPv6'),  // IPv6のみOK
        'message' => 'IPアドレスを入力して下さい。',
        'allowEmpty' => true
    ),
);


Textヘルパー:/lib/Cake/Utility/Validation.php
Models > Data Validation
2.1 / 2.2 / 2.3 / 2.4
  • このエントリーをはてなブックマークに追加

関連記事

バリデーションエラーメッセージの取得

CakePHP 2.xになってバリデーションエラー時に返却されるメッセージのデータ形式が変更になったようです。1.3系では、ひとつのフィールドに対して返却されるメッセージは一つのルールのみですが、2.

CakePHP インストール時エラーの対処

CakePHPインストール時に出くわすであろうエラーの原因と対処方法についてまとめてみました。前提として、WebサーバはApache、データベースはMySQLとしています。 Timezone未設

SQLクエリーをログに出力する

SQLのクエリーをデバッグするには、Debug Kitを使用すればできますが、デバッグログと一緒に出したいのでやり方を調査してみました。 別々のログやビューでみるのもいいですが、秒単位で実行される処

DebugKitを導入

定番のブログチュートリアルをこなして、定番のDebugKitを導入してみました。 2.3からはCakePHPインストール直後に以下のように導入を推奨するような警告メッセージが表示されるようになりまし

パス定数と変更方法やURLの取得

CakePHPは基本的にはディレクトリそのまま配置することで構築が可能ではありますが、設定パスを変更することでセキュリティに考慮した構成にすることや運用性をもたせたものにすることが可能になります。

Blowfishを使用してハッシュ化する

使用方法 Blowfishを採用してハッシュ化を行う場合、Securityクラスのhashメソッドを呼び出します。第2引数に'blowfish'を指定し、第3引数を指定しないもしくはfalseにしま

多言語サイト向けに翻訳ファイルを使って翻訳を行う

CakePHPには、翻訳をビヘイビアを使用する方法と翻訳ファイルを使用する方法の2つがあるそうです。(他にもあるのかな?) 今回は、翻訳ファイルを使用して言語の切り替えを行い、その言語設定をCook

CakePHP 2.x インストール

現在まで私が商用・非商用にリリースしているCakePHPアプリケーションは全て1.3.xベースで作成しています。 まだまだロードマップ的には大丈夫そうですが、お客さん向けに納品しているアプリケーショ

Formヘルパーのinputタグのdiv/labelなどの設定

Formヘルパーのinputではデフォルトでは以下のようにdivで囲われて、labelが付与されて出力されます。 CSSのフレームワークなどであらかじめ決まったスタイルがある場合に便利に作られていま

複数ファイルアップロードフォーム

CakePHP 2.0からはHTML5が標準でサポートとなり、複数ファイルアップロードのためのフォーム記述が容易になりました。 View (ビュー) 配列 Array (

Comment

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

    PAGE TOP ↑