专栏首页我的博客TP入门第十天

TP入门第十天

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 条评论
登录 后参与评论

相关文章

  • PHP学习进程

    做为一个php痴迷者,我一直想整理一份系列学习php的计划。下面是我学习php进程计划。 1.准备知识:了解html,熟悉div+css,通过设计稿编辑前台 2...

    苦咖啡
  • Tp3.1.2安全

    1.表单令牌 ‘TOKEN_ON’=>true, // 是否开启令牌验证 ‘TOKEN_NAME’=>’__hash__’, // 令牌验证的表单隐藏字段名...

    苦咖啡
  • Apache开启浏览器缓存、开启gizp

    ExpiresActive On ExpiresDefault "access plus 12 month" ExpiresByType text/html "...

    苦咖啡
  • 3分钟短文:Laravel的“南天门”,过滤掉七七八八的数据

    上一章我们教会大家如何从用户表单内正确地获取数据,可是没有讲,获取到的数据到底有啥用,或者说,有的用户提交的数据压根儿就没正经填,那些错乱无效的数据,如果直接放...

    程序员小助手
  • IC验证工程师高效战斗手册--接到验证任务与前期高效学习

    前面我们讲了贯穿整个工作始终的提问之道,今天我们一起探讨接到验证任务、以及验证前期如何高效的学习。

    IC验证
  • 3分钟短文:Laravel验证用户输入,不要把啥都存到系统里

    从请求对象Request创建之后,系统开始接收用户输入数据,设计程序记住一条,永远不要相信用户的输入。你永远也想不到,用户会把什么样稀奇古怪的数据提交上来。

    程序员小助手
  • asp.net MVC 验证注解

    对于Web系统,对于用户的输入验证是必须的。不仅需要在客户端对用户的输入进行验证,在服务端也需要对用户的执行进行验证。 asp.net MVC中对于验证提供了一...

    水击三千
  • 使用ASP.NET Core 3.x 构建 RESTful API - 5.1 输入验证

    想要定义验证规则,我们可以使用ASP.NET Core内置的方式或者使用第三方库。

    solenovex
  • 从EDA 使用,捋数字芯片设计实现流程 | 验证

    接着《从EDA 使用,捋数字芯片设计实现流程 | 上》捋,实际项目中验证跟综合从RTL coding 开始就会交叉进行,反复迭代。

    老秃胖驴
  • 域名所有权怎么验证

    域名所有权怎么验证?百度站长工具、谷歌网站管理员工具(Google Webmaster Tools)、百度统计、360 站长工具等这些应用都要先验证域名所有权,...

    魏艾斯博客www.vpsss.net

扫码关注云+社区

领取腾讯云代金券