PEAR::HTML_QuickForm的驗證規則
參考資料:http://phpeye.com/article/view/id/108
規則名稱 | 參數 | 規則描述 |
required |
| 必須輸入,不能為空 |
maxlength | $length | 最大字符長度 |
minlength | $length | 最小字符長度 |
rangelength | $min,$max | 字符長度的範圍 |
regex | $rx | 輸入的數據必須匹配給定的正則表達式 |
true | 驗證email地址的格式(有個可選的選項還可以查看域名是否有效) | |
lettersonly |
| 只能是英文字母 |
alphanumeric |
| 只能是英文字母或數字 |
numeric |
| 只能是數字 |
nopunctuation |
| 不能包含以下特殊字符: ( ) . / * ^ ? # ! @ $ % + = , " ' > < ~ [ ] { }. |
nonzero |
| 不能為零 |
compare |
| 兩次輸入必須相同 |
uploadedfile |
| 表單元素必須包含正確上傳文件 |
maxfilesize | $size | 上傳文件的最大容量 |
mimetype | $mime | 上傳文件的類型,$mime可以是數組,則上傳文件的類型必須為其中一種 |
filename | $file_rx | 上傳的文件的名稱必須滿足給定的正則表達式 |
其中compare規則有點特殊,它是指兩個表單的輸入數據必須相同(如密碼確認時)。它的用法如下:
$form
->
addElement
(
'password'
,
'password_1'
,
'Enter your password:'
);
$form
->
addElement
(
'password'
,
'password_2'
,
'Enter your password (again):'
);
$form
->
addRule
(array(
'password_1'
,
'password_2'
),
"Passwords don't match!"
,
'compare'
);
compare也可以用來比較兩個表單中輸入的數據的大小,如:
$form
->
addElement
(
'text'
,
'min_age'
,
'Minimum Age:'
);
$form
->
addElement
(
'text'
,
'max_age'
,
'Maximum Age:'
);
$form
->
addRule
(array(
'min_age'
,
'max_age'
),
"Minimum Age must be less than Maximum Age"
,
'compare'
,
'<'
);
客戶端驗證功能
客戶端驗證:
前面有提到使用addRule()來增加一條驗證規則,其實addRule()還有第五個參數—client。這個參數用來說明我們將使用的是客戶端驗證,如果傳遞了這個參數,則程序會自動生成客戶端的Javascript代碼來驗證表單裡的數據。
使用客戶端驗證更加快捷方便,而且可以減輕服務器的負載。
Client.php
//
加入三條客戶端驗證規則
$form
->
addRule
(
'name'
,
'
用戶名不能為空!
'
,
'required'
,
''
,
'client'
);
$form
->
addRule
(
'name'
,
'
用戶名必須為
3
位以上字母或數字
'
,
'minlength'
,
3
,
'client'
);
$form
->
addRule
(
'password'
,
'
密碼不能為空!
'
,
'required'
,
''
,
'client'
);