标签:
数据安全是程序开发中至关重要一点,特别是对商城程序而言,一般对表单数据验证都是采用前端JS与后端PHP验证相结合的方式,ShopNC商城系统在表单数据验证上也是如此, ShopNC系统的后台PHP验证分为两部分:控制器层验证和框架底层验证,Validate验证类的作用就是完成在控制器里的验证。
下面是登录时的一段使用Validate类验证程序:
if (chksubmit()){
$obj_validate = new Validate();
$obj_validate->validateparam = array(
array("input"=>$_POST["username"], "require"=>"true", "message"=>"请输入用户名"),
array("input"=>$_POST["password"], "require"=>"true", "message"=>"请输入密码"),
array("input"=>$_POST["captcha"], "require"=>(C(‘captcha_status_login‘) ? "true" : "false"), "message"=>"请输入验证码"),
);
$error = $obj_validate->validate();
if ($error != ‘‘){
//输入信息有误,验证失败!
showValidateError($error);
}else {
/**
* 程序继续向下执行
*/
}
}
代码分析:
首先由chksubmit函数判断表单提交是否合法,令牌是否正确,判断通过后,使用Validate类进行数据验证,Validate类的validateparam属性数组存放待验证的信息,其中,input为待验证的数据,require为是否为必填项(true/false),message为如果验证未通过,返回的提示信息。可以看出上例的用户名和密码均为必填项,验证码视系统开关captcha_status_login的值而定。C函数作用是取得系统配置项。
准备工作都完后成,开始调用类的validate方法进行验证,如果验证未过通,返回错误信息,否则返回空。错误信息的输出由showValidateError函数完成,该函数跟据是否是异步提交返回不同的提示形式。
除可以验证是否为必填外,Validate类还可以完成一些常用的数据类型验证。如验证邮件、电话、网址、货币、邮编、QQ、数字、英文、汉字、两数值比较等。如:
$obj_validate = new Validate();
$obj_validate->validateparam = array(
array("input"=>$_POST["password1"], "require"=>"true", "validator"=>"compare", "operator"=>"==", "to"=>$_POST["password2"], "message"=>"两次密码输入要一致"),
array("input"=>$_POST["input0"], "require"=>"true", "validator"=>"email", "message"=>‘邮件验证‘),
array("input"=>$_POST["input1"], "require"=>"true", "validator"=>"phone", "message"=>‘固话验证‘),
array("input"=>$_POST["input2"], "require"=>"true", "validator"=>"mobile", "message"=>‘手机验证‘),
array("input"=>$_POST["input3"], "require"=>"true", "validator"=>"url", "message"=>‘网址验证‘),
array("input"=>$_POST["input4"], "require"=>"true", "validator"=>"currency", "message"=>‘价格验证‘),
array("input"=>$_POST["input5"], "require"=>"true", "validator"=>"number", "message"=>‘数字验证‘),
array("input"=>$_POST["input6"], "require"=>"true", "validator"=>"zip", "message"=>‘邮编验证‘),
array("input"=>$_POST["input6"], "require"=>"true", "validator"=>"qq", "message"=>‘QQ验证‘),
array("input"=>$_POST["input6"], "require"=>"true", "validator"=>"english", "message"=>‘英文字母验证‘),
array("input"=>$_POST["input6"], "require"=>"true", "validator"=>"chinese", "message"=>‘中文验证‘),
);
$error = $obj_validate->validate();
标签:
原文地址:http://www.cnblogs.com/zhijiangch/p/5127619.html