我在上一篇文章中讲到使用javascript做集成表单验证的方法,对于客户端验证已经足够,但好的表单验证应同时在客户端和服务器端进行——这正是写本文的目的。
如果采用一般的验证方法应该怎样写呢?
if ($_POST[@#some@#] 不满足 condition) {
die("wrong");
}
类似于javascript的集成验证方法,在PHP中也可利用数组和eval语句实现表单验证(服务器端)框架。一般步骤:
1、将用户提交的数据从$_GET或$_POST数组收集到自定义数组(可选),
2、填充验证数组(包括变量名、条件及提示等),
3、添加固定的验证代码。
下面我来举例说明,假设你要从网页中收集用户姓名及年龄,并且在服务器端实现数据验证,那么你可能需要form.html和act.php。form.html中包含表单:
<form method=post action=act.php>
姓名:<input type=text name=@#name@#><br>
年龄:<inupt type=text name=@#uage@# ><br>
<input type=submit value="提交">
</form>
act.php中将实现表单的验证:
$userinfo = array(); // 步骤1
$userinfo[@#name@#] = isset($_POST[@#uname@#]) ? $_POST[@#uname@#] : @#@#;
$userinfo[@#age@#] = isset($_POST[@#uage@#]) ? (int)$_POST[@#uage@#] : 0;
$error_message = ""; // 错误信息
// 步骤2
$elems = array(
array("\$userinfo[@#name@#]", @#strlen(#)<1@#, @#姓名不能为空!@#),
// 若省略步骤1则按如下方式改写:
// array("\$_POST[@#uname@#]", @#strlen(#)<1@#, @#姓名不能为空!@#),
array("\$userinfo[@#age@#]", @##<=0@#, @#年龄不正确!@#)
);
// 步骤3
for($i = 0; $i < count($elems); $i++) {
if(eval("if(".preg_replace("/[#]/", $elems[$i][0], $elems[$i][1]).") return false;") === false) {
$error_message .= $elems[$i][2];
}
}
这样,我们每次只须填充验证数组$elems就可完成表单验证。
希望对你们有用,我也很想知道你们是怎么做的。
这样,我们每次只须填充验证数组$elems就可完成表单验证。
希望对你们有用,我也很想知道你们是怎么做的。
这样,我们每次只须填充验证数组$elems就可完成表单验证。
希望对你们有用,我也很想知道你们是怎么做的。