Pear フォ-ム2作成
Pear フォ-ム2作成ファイル2
引き続き Pear フォ-ム2のファイルを作成していきます。
Pear フォ-ム2作成ファイル内容は、左サイドナビ「Pear フォ-ム作成」の中の
「Pear フォ-ム2作成 PHP ファイル」
から見てください。
検証ルールを定義するため addRule メソッドを使用します。
書式は、
$uname -> addRule(name,エラメッセージ,書式)
のように記述します。
検証タイプには、次のようなものがあります。
が、私には詳細が不明のものもあります。
名称 | 説明 | 書式 |
---|---|---|
re quired | 必須入力チェック | $obj-> addRule ('required', エラ-メッセ-ジ) |
com pare | フィ-ルド値の比較 | $obj-> addRule ('compare', エラ-メッセ-ジ, 比較方法・箇所の連想配列) |
regex | 正規表現チェック | $obj-> addRule ('regex', エラ-メッセ-ジ, 正規表現) |
call back | コ-ルバック関数を使ったチェック | $obj-> addRule ('callback', エラ-メッセ-ジ, コ-ルバック関数・引数の連想配列) |
max length | 最大文字バイトチェック | $obj-> addRule ('maxlength', エラ-メッセ-ジ, 最大文字バイト数) |
min length | 最小文字バイトチェック | $obj-> addRule ('minlength', エラ-メッセ-ジ, 最小文字バイト数) |
検証ルールの付与-メ-ルアドレス
メ-ルアドレスに検証ルールを定義するため addRule メソッドを付与します。
メ-ルアドレスを必須項目にします。
$email ->addRule
('required', '<font color="red">   メ-ルアドレスは必須です</font>');
メ-ルアドレス入力欄がもし空欄ならば、「メ-ルアドレスは必須です」のエラメッセージが出力されます。
必須入力チェックは'required'、エラ-メッセ-ジにはタグも使用可能なので、赤文字指定にしました。
インテンドの調整に、泥臭く空白を入れ込みました。
そして、メ-ルアドレスが正しいかどうかのチェックです。
ここが、問題です。
HTML/QuickForm の時は、'email' の指定だけで正しいかどうか判定してくれたのですが、
HTML/QuickForm2 でば正規表現を指定する必要があります。
メ-ルアドレスの正規表現方法を理解する必要がでてきてしまいました。
![Web 一筆箋](img/ippitsusen.png)
メ-ルアドレス正規表現方法は沢山あるようです。
非常に長文な完璧なものもあるようですが、ここではなるべく簡単で、効果効率の高いものを使用することにします。
'/^[a-zA-Z0-9][a-zA-Z0-9_¥.¥-]+@[A-Za-z0-9_¥.¥-]+$/'
がよいのではないかと思いますので、これを使用することにしました。
ただ、この表現が何を言っているかぐらいは勉強したいと思います。
^[a-zA-Z0-9]
^ は先頭を表す、英小文字 a-z、又は英大文字 A-Z、又は数字 0-9 で始まること示しています。
[a-zA-Z0-9_¥.¥-]
2文字目以降は、a-zA-Z0-9 の他 _.- のいずれかが来ます。
. と - の前には ¥ がつけられています。
正規表現を表す時 . は任意の一文字を現す記号、- は範囲を現す記号なので、
そのままではドットマークやハイフンと認識しません。
そこで ¥ を前において実際のドットやハイフンであること示しています。
[a-zA-Z0-9_¥.¥-]+
+ は、1回以上の繰り返しです。
よって、[a-zA-Z0-9_¥.¥-] の文字が1回以上の繰り返しがあることを表します。
次ぎに @ がきます。
$ は行の末尾を表します。
正規表現は難しい。
うまく制御できない奇妙なメ-ルアドレスもあるのですが、こんな所で終わりにします。
やっと、メ-ルアドレスの検証です。
$email ->addRule
('regex', '<font color="red">   メ-ルアドレスが不正です</font>',
'/^[a-zA-Z0-9][a-zA-Z0-9_¥.¥-]+@[A-Za-z0-9_¥.¥-]+$/');
やっとメ-ルアドレスチェック完了です。
検証ルールの付与-名前
同様に、名前にも検証ルールを付与します。
$uname ->addRule
('required', '<font color="red">   名前は必須です</font>');
$uname ->addRule
('maxlength',
'<font color="red">   1~10文字(すべて全角文字の時)
   で記入してください', 30);
名前の文字数は全角換算で10文字以内にします。
UTF-8の文字コードは全角文字は3バイトで表現されています。
よって、1~10文字以内を指定するには必要なパラメータ最大文字バイト数は 30 を指定します。
フィルタの適用
addFilter メソッドを使用して、フォ-ムの要素にフィルタを適用します。
書式は、addFilter(フィルタ内容); です。
今回は、フォームのすべての要素に htmlspecialchars を適用したいので、
$formInfo ->addFilter('htmlspecialchars');
とします。
なぜ htmlspecialchars を適用するの?
HTMLには特殊な意味(役割)を持っている文字(特殊文字)があり、その文字をHTMLでの意味(役割)としてではなく、
ただの文字(見た目は記号)として表示するために文字参照値に置き換える機能を持つのが
htmlspecialchars 関数です。
フォームなどでユーザー(他者)からの悪意ある入力を無害化するのに用いられ、安全性を高めるために指定されます。
フォームの表示
Renderer ファクトリを使用して、フォ-ムを表示します。
$renderer = HTML_QuickForm2_Renderer::factory('default');
factory( ) 内の値は作法として 'default' を設定してください。
それ以外の指定では、うまく表示してくれません。
必須入力の注意文
$renderer ->setOption(array('required_note' => " * 必須入力項目<br><br>"));
として必須入力 * 印の注意文を設定します。
フォームの検証
validate メソッドを使用して、フォ-ム要素を検証します。
もしフォ-ム要素が正しければ
echo
"<br>会員登録のため<br>
 ".htmlspecialchars($_POST["uname"]).
"<br>さんのメ-ルアドレス<br>
 ".$_POST["email"].
"<br>を準備しました<br><br>";
とし、正しく入力されたことを明示します。
一方、正しくなければ、フォームを再表示します。
これで、Pear フォ-ム2作成-検証ルールの定義は完了です。
引き続き、Pear フォ-ム2作成ファイル動作確認 に進みます。
Pear フォ-ム2作成ファイル動作確認 に続く
Pear フォ-ム2作成ファイル に戻る