咨询热线:18076568990、0755-25823180

ShoWT 商城系统开发经验分享 第四篇 表单数据验证

1747 3 Sunboy1215 发表于 2015-1-16 13:43:55
数据安全是程序开发中至关重要一点,特别是对商城程序而言,一般对表单数据验证都是采用前端JS与后端PHP验证相结合的方式,ShoWT商城系统在表单数据验证上也是如此, ShoWT系统的后台PHP验证分为两部分:控制器层验证和框架底层验证,Validate验证类的作用就是完成在控制器里的验证。

下面是登录时的一段使用Validate类验证程序:
  1. if (chksubmit()){

  2.        $obj_validate = new Validate();

  3.        $obj_validate->validateparam = array(

  4.        array("input"=>$_POST["username"],        "require"=>"true", "message"=>"请输入用户名"),

  5.        array("input"=>$_POST["password"],         "require"=>"true", "message"=>"请输入密码"),

  6.        array("input"=>$_POST["captcha"],            "require"=>(C('captcha_status_login') ? "true" : "false"), "message"=>"请输入验证码"),

  7.        );

  8.        $error = $obj_validate->validate();

  9.        if ($error != ''){

  10.               showValidateError($error);

  11.        }else {

  12.               /**

  13.                * 程序继续向下执行

  14.                */

  15.        }

  16. }
复制代码

代码分析:

首先由chksubmit函数判断表单提交是否合法,令牌是否正确,判断通过后,使用Validate类进行数据验证,Validate类的validateparam属性数组存放待验证的信息,其中,input为待验证的数据,require为是否为必填项(true/false),message为如果验证未通过,返回的提示信息。可以看出上例的用户名和密码均为必填项,验证码视系统开关captcha_status_login的值而定。C函数作用是取得系统配置项。

准备工作都完后成,开始调用类的validate方法进行验证,如果验证未过通,返回错误信息,否则返回空。错误信息的输出由showValidateError函数完成,该函数跟据是否是异步提交返回不同的提示形式。

除可以验证是否为必填外,Validate类还可以完成一些常用的数据类型验证。如验证邮件、电话、网址、货币、邮编、QQ、数字、英文、汉字、两数值比较等。如:
  1. $obj_validate = new Validate();

  2. $obj_validate->validateparam = array(

  3. array("input"=>$_POST["password1"], "require"=>"true", "validator"=>"compare", "operator"=>"==", "to"=>$_POST["password2"], "message"=>"两次密码输入要一致"),

  4. array("input"=>$_POST["input0"], "require"=>"true", "validator"=>"email", "message"=>'邮件验证'),

  5. array("input"=>$_POST["input1"], "require"=>"true", "validator"=>"phone", "message"=>'固话验证'),

  6. array("input"=>$_POST["input2"], "require"=>"true", "validator"=>"mobile", "message"=>'手机验证'),

  7. array("input"=>$_POST["input3"], "require"=>"true", "validator"=>"url", "message"=>'网址验证'),

  8. array("input"=>$_POST["input4"], "require"=>"true", "validator"=>"currency", "message"=>'价格验证'),

  9. array("input"=>$_POST["input5"], "require"=>"true", "validator"=>"number", "message"=>'数字验证'),

  10. array("input"=>$_POST["input6"], "require"=>"true", "validator"=>"zip", "message"=>'邮编验证'),

  11. array("input"=>$_POST["input6"], "require"=>"true", "validator"=>"qq", "message"=>'QQ验证'),

  12. array("input"=>$_POST["input6"], "require"=>"true", "validator"=>"english", "message"=>'英文字母验证'),

  13. array("input"=>$_POST["input6"], "require"=>"true", "validator"=>"chinese", "message"=>'中文验证'),

  14. );

  15. $error = $obj_validate->validate();
复制代码



您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 今日
    0
  • 主题
    1507

推荐贴子

联系我们

产品及方案咨询:18076568990、0755-25823180

电子邮箱:web@shopwt.com、客服微信:shopwtcom

公司地址:深圳市罗湖区人民南路3002号国贸大厦B座1608楼

  • 官方公众号

  • 微信客服