|
数据安全是程序开发中至关重要一点,特别是对商城程序而言,一般对表单数据验证都是采用前端JS与后端PHP验证相结合的方式,ShoWT商城系统在表单数据验证上也是如此, ShoWT系统的后台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();
复制代码
|