前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TP入门第十天

TP入门第十天

作者头像
苦咖啡
发布2018-05-07 17:43:11
1.5K0
发布2018-05-07 17:43:11
举报
文章被收录于专栏:我的博客我的博客

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 可以无延时重定向,具体采用哪种视具体情况而定。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2012年8月9日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档