PHPの最近のブログ記事

QuickFormの入力チェックの注意事項

QuickFormの入力チェックは2バイト文字を考慮していないため、場合によってはJavascriptのチェックはクリア出来るが、サーバサイドのチェックがクリアできない場合がある。結論から言うとQuickFormの入力チェックは信用せずに自分で作った方がいい。

相当ハマッたのでメモ。

 

今のところ確認済みの問題

・length

今時のブラウザは2バイト文字の文字数も正しくカウントするが、QuickFormのチェックでは1バイトづつカウントする。全角文字が入力される場合の文字数チェックは自前で作る必要がある。

 

・numeric

これ、大問題。Firefoxは正規表現で\dを指定した場合、全角数字もマッチしてしまう。QuickFormの書き出すJavascript側のnumericチェックは上記の\dを使ってチェックするため、ブラウザチェックは通って、サーバ側でエラー言われてしまう。apllyfilter使うしかないけど、Smarty使ってる場合、表示用にPluginで変換処理をかます必要がある。

 

まだ、まだ、問題ありそう。