TP入门第十天

2018-05-07 17:43:11 浏览数 (1)

1、自动验证

数据对象是由表单提交的$_POST数据创建。需要使用系统的自动验证功能,只需要在Model类里面定义$_validate属性,是由多个验证因子组成的二维数组。

验证因子格式: array(验证字段,验证规则,错误提示,[验证条件,附加规则,验证时间])

验证字段

必须

需要验证的表单字段名称,这个字段不一定是数据库字段,也可以是表单的一些辅助字段,例如确认密码和验证码等等。有个别验证规则和字段无关的情况下,验证字段是可以随意设置的,例如expire有效期规则是和表单字段无关的。

验证规则

必须

要进行验证的规则,需要结合附加规则,如果在使用正则验证的附加规则情况下,系统还内置了一些常用正则验证的规则,可以直接作为验证规则使用,包括:require字段必须、email邮箱、url URL地址、currency货币、number数字。

提示信息

必须

用于验证失败后的提示信息定义

验证条件

可选

包含下面几种情况:Model::EXISTS_VAILIDATE或者0存在字段就验证 (默认)Model::MUST_VALIDATE或者1必须验证 Model::VALUE_VAILIDATE或者2值不为空的时候验证

附加规则

可选

配合验证规则使用,包括下面一些规则:regex 正则验证,定义的验证规则是一个正则表达式(默认)function函数验证,定义的验证规则是一个函数名 callback方法验证,定义的验证规则是当前模型类的一个方法 confirm验证表单中的两个字段是否相同,定义的验证规则是一个字段名 equal验证是否等于某个值,该值由前面的验证规则定义 in验证是否在某个范围内,定义的验证规则必须是一个数组 length验证长度,定义的验证规则可以是一个数字(表示固定长度)或者数字范围(例如3,12表示长度从3到12的范围) between验证范围,定义的验证规则表示范围,可以使用字符串或者数组,例如1,31或者array(1,31) expire验证是否在有效期,定义的验证规则表示时间范围,可以到时间,例如可以使用 2012-1-15,2013-1-15表示当前提交有效期在2012-1-15到2013-1-15之间,也可以使用时间戳定义 ip_allow 验证IP是否允许,定义的验证规则表示允许的IP地址列表,用逗号分隔,例如 201.12.2.5,201.12.2.6 ip_deny 验证IP是否禁止,定义的验证规则表示禁止的ip地址列表,用逗号分隔,例如201.12.2.5,201.12.2.6 unique 验证是否唯一,系统会根据字段目前的值查询数据库来判断是否存在相同的值。

验证时间

可选

Model:: MODEL_INSERT或者1新增数据时候验证Model:: MODEL_UPDATE或者2编辑数据时候验证Model:: MODEL_BOTH或者3全部情况下验证(默认)

具体用法可以参考手册进行

2、自动完成(填充)

在Model类定义 $_auto属性,可以完成数据自动处理功能,用来处理默认值、数据过滤以及其他系统写入字段。$_auto属性是由多个填充因子组成的数组。填充因子格式: array(填充字段,填充内容,[填充条件,附加规则])

填充字段

必须

就是需要进行处理的表单字段,这个字段不一定是数据库字段,也可以是表单的一些辅助字段,例如确认密码和验证码等等。

填充规则

必须

配合附加规则完成

填充时间

可选

包括:Model:: MODEL_INSERT或者1新增数据的时候处理(默认)Model:: MODEL_UPDATE或者2更新数据的时候处理 Model:: MODEL_BOTH或者3所有情况都进行处理

附加规则

可选

包括:function:使用函数,表示填充的内容是一个函数名callback:回调方法 ,表示填充的内容是一个当前模型的方法 field:用其它字段填充,表示填充的内容是一个其他字段的值 string:字符串(默认方式)

具体使用详见手册

3、数据安全

表单令牌:防止表单重复提交

配置参数:

‘TOKEN_ON’=>true,  //是否开启令牌验证

‘TOKEN_NAME’=>’__hash__’,    // 令牌验证的表单隐藏字段名称

‘TOKEN_TYPE’=>’md5’,  //令牌哈希验证规则 默认为MD5

‘TOKEN_RESET’=>true,  //令牌验证出错后是否重置令牌 默认为true

如果开启表单令牌验证功能,系统会自动在带有表单的模板文件里面自动生成以TOKEN_NAME为名称的隐藏域,其值则是TOKEN_TYPE方式生成的哈希字符串,用于实现表单的自动令牌验证。(如果有多个表单提交可以参考手册使用)

防止SQL注入:系统会自动把curd的数据进行escape_string处理

输入过滤:用户输入的数据过滤建议使用令牌、自动验证、自动完成等

上传安全:文件后缀、文件类型、文件大小、图片文件合法性等必须要严格验证

防止XSS攻击:过滤js脚本参考:http://www.0377joyous.com/archives/815.html

4、页面跳转和重定向

在应用开发中,经常会遇到一些带有提示信息的跳转页面,例如操作成功或者操作错误页面,并且自动跳转到另外一个目标页面。系统的Action类内置了两个跳转方法success和error,用于页面跳转提示,而且可以支持ajax提交。Success和error方法都有对应的模板,并且是可以设置的,默认的设置是两个方法对应的模板都是:模板文件可以使用模板标签,并且可以使用下面的模板变量:

$msgTitle:操作标题 $message :页面提示信息 $status :操作状态  1表示成功 0表示失败 具体还可以由项目本身定义规则 $waitSecond :跳转等待时间 单位为秒 $jumpUrl :跳转页面地址 具体使用中有讲解 Action类的redirect方法可以实现页面的重定向功能。 三个方法的区别和联系: redirect 重定向与 success/error 跳转的区别

  • redirect 是使用的 PHP header 重定向,而 success/error 是使用的 html meta http-equiv=’Refresh’ 属性跳转。
  • redirect 无模板页面,输出的提示信息是直接在函数内 echo 输出的,而 success/error 有对应的模板。
  • redirect 与 success/error 都可以实现页面的跳转,只是 redirect 可以无延时重定向,具体采用哪种视具体情况而定。

0 人点赞