我们再次对这段代码进行改进,为其加入表单数据验证功能。
使用户在登录时必须输入用户名和密码,并且用户名长度不能小于三位。
Form3.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> PEAR::HTML_QuickForm </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="Haohappy">
</HEAD>
<BODY>
<?
require_once( "HTML/QuickForm.php" );
$form = new HTML_QuickForm ( 'frmTest' , 'post' );
$form -> addElement ( 'header' , 'header' , ' 请登录 ' );
$form -> addElement ( 'text' , 'name' , ' 用户名: ' );
$form -> addElement ( 'password' , 'password' , ' 密码: ' );
$form -> addElement ( 'submit' , '' , ' 提交 ' );
// 加入三条验证规则
$form -> addRule ( 'name' , ' 用户名不能为空! ' , 'required' );
$form -> addRule ( 'name' , ' 用户名必须为 3 位以上字母或数字 ' , 'minlength' , 3 );
$form -> addRule ( 'password' , ' 密码不能为空! ' , 'required' );
if ( $form -> validate ()) {
$form -> process ( 'say_hello' );
} else {
$form -> display ();
}
function say_hello ( $data ) {
print 'Hello, ' . $data [ 'name' ];
print '<BR>' ;
print 'Your password is ' . $data [ 'password' ];
}
?>
</BODY>
</HTML>
输出效果如图:



可以看到我们仅用了以下三行简单的代码来实现数据验证功能,和我们平时所采取的方法相比方便得多。
// 加入三条验证规则
$form -> addRule ( 'name' , ' 用户名不能为空! ' , 'required' );
$form -> addRule ( 'name' , ' 用户名必须为 3 位以上字母或数字 ' , 'minlength' , 3 );
$form -> addRule ( 'password' , ' 密码不能为空! ' , 'required' );
addRule() 方法的四个参数分别表示规则应用的对象、提醒文字、验证规则的类型 ( 如 required 表示必须输入,不能为空 ) 、验证规则的参数。
PEAR::HTML_QuickForm自带的验证规则如下:
规则名称 |
参数 |
规则描述 |
required |
|
必须输入,不能为空 |
maxlength |
$length |
最大字符长度 |
minlength |
$length |
最小字符长度 |
rangelength |
$min,$max |
字符长度的范围 |
regex |
$rx |
输入的数据必须匹配给定的正则表达式 |
email |
true (forDNS heck) |
验证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' , '<' );

|