ShopNC学习笔记三:表单数据验证

数据安全是程序开发中至关重要一点,特别是对商城程序而言,一般对表单数据验证都是采用前端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();

时间: 2024-08-02 08:47:02

ShopNC学习笔记三:表单数据验证的相关文章

Codeigniter入门学习笔记14—表单的验证

很久很久以前学习Codeigniter的笔记记录,很随意,但都是自己记录的,希望对需要的人有所帮助. 本文使用word2013编辑并发布 Postbird | There I am , in the world more exciting! Postbird personal website : http://www.ptbird.cn 表单验证 1.add_user ????] 2.form_check() ???? 3. ? 1.加载 ????$this->load->library('f

struts2学习笔记之五:表单数据收集的几种方式

方法一:struts2对ModelDriven模式的支持(模型驱动模式) Struts2可以采用类似于Struts1中的ActionForm方式收集数据,这样方式叫ModelDriven模式 Action需要实现ModelDriven接口,实现getModel()方法,返回Bean对象,这样struts2会通过getModel()方法拿到对象,使用set方法把数据填充到对象中 创建User类(Bean对象,包含geter方法和seter方法的纯java类) User类 package com.d

Lua学习笔记(三):表的构造

构造器是创建和初始化表的表达式.表是Lua特有的功能强大的东西.最简单的构造函数是{},用来创建一个空表.可以直接初始化数组: 1 days = {"Sunday", "Monday", "Tuesday", "Wednesday", 2 "Thursday", "Friday", "Saturday"} Lua将“Sunday”初始化days[1](第一个元素索引为

JavaScript--基于对象的脚本语言学习笔记(三)

事件处理器 1.一个数据校验表单的例程 <html> <head> <title>js练习</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <script type="text/javascript"> String.prototype.trim=function(){ r

Symfony2学习笔记之表单

对于一个Web开发者来说,处理HTML表单是一个最为普通又具挑战的任务.Symfony2集成了一个Form组件,让处理表单变的容易起来.在这一节里,我们将从基础开始创建一个复杂的表单,学习表单类库中最重要的内容. Symfony2 的Form组件是一个独立的类库,你可以在Symfony2项目之外使用它. 创建一个简单的表单:假设你要创建一个应用程序的todo列表,需要显示一些任务.因为你的用户需要编辑和创建任务,所以你需要创建一个表单.在你开始之前,首先来看通用的Task类,用来表示和存储一个单

加壳学习笔记(三)-简单的脱壳思路&amp;调试思路

首先一些windows的常用API: GetWindowTextA:以ASCII的形式的输入框 GetWindowTextW:以Unicaode宽字符的输入框 GetDlgItemTextA:以ASCII的形式的输入框 GetDlgItemTextW:以Unicaode宽字符的输入框 这些函数在使用的时候会有些参数提前入栈,如这函数要求的参数是字符串数目.还有大小写啦之类的东西,这些东西是要在调用该函数之前入栈,也就是依次push,就是说一般前面几个push接着一个call,那前面的push可能

lucene学习笔记(三)

好几天没更新了.更新一下,方便自己和大家学习. 这是最基本的代码 package index; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document;

python 学习笔记 三 字典

字典 Python的高效的key/value哈希表结构叫做"dict", dict的内容可以写成一系列的key:value对并放入{ }中, 相当于: dict = {key1:value1, key2:value2, ...}, 一个空的字典就是俩个大括号{ }. 下面是从一个空字典创建字典以及一些关键点: 数字, 字符串和元组可以作为字典的key, value可以是任何类型(包括字典). ## Can build up a dict by starting with the the

Oracle学习笔记三 SQL命令

SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)               下面是这四种SQL语言的详细笔记: Oracle学习笔记三 SQL命令(二):SQL操作语言类别 Oracle数据类型 创建表时,必须为各个列指定数据类型 以下是 Oracle 数据类型的类别: 字符数据类型 CHAR类型 当需要固定长度的字符串时,使用 CHAR 数据类型. CHAR 数据类型存储字母数字值. CH