ネットの記事によると、CakePHPのバリデーションルール「alphaNumeric」は日本語をはじかないらしい。
試してみる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// モデル定義 class Personal extends AppModel { public $validate = array( 'name' => array( 'empty' => array( 'rule' => 'notBlank', 'message' => '名前は必ず入力してください', ), 'alphanum' => array( 'rule' => 'alphanumeric', 'message' => '名前は英数字のみで入力してください', ) ), 'password' => array( 'rule' => 'notBlank', 'message' => 'パスワードは必ず入力してください', ), ); } |
半角記号を混ぜたらバリデーションエラーになった。これはOK。
ひらがなを混ぜたらエラーにならず。これはNG。
日本語ユーザ向けのシステムでは対処しないとマズイ。
対処法は日本語をはじくようにalphaNumericの実装を上書きすれば良い。
1 2 3 4 5 6 7 8 9 10 |
// モデル定義 class Personal extends AppModel { .... public function alphaNumeric($check) { $value = array_values($check); $value = $value[0]; return preg_match('/^[a-zA-Z0-9]+$/', $value); } .... } |
参考サイト
CakePHP2.xでvalidationルールで日本語がチェックされない – Qiita
http://qiita.com/ykirishima/items/9e71a6233058600ec2ea
CakePHPのバリデーションルール「alphaNumeric」は要注意! | アイビースター
http://ivystar.jp/programming/php/cakephp-php-programming/cakephp%E3%81%AE%E3%83%90%E3%83%AA%E3%83%87%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%AB%E3%83%BC%E3%83%AB%E3%80%8Calphanumeric%E3%80%8D%E3%81%AF%E8%A6%81%E6%B3%A8%E6%84%8F%EF%BC%81/