_map属性可以将HTML表单中的元素以别名的方式映射到真实的数据表字段,和其他属性一样,_map属性也必须定义在自定义模型中,该属性的值为二维数组,下面以7.1.3节内容为基础,修改add_article.html表单元素与add动作代码,并在Article模型中创建createAdd方法,用于处理表单数据。接下来在Article模型中使用_map属性将这些元素映射为tpk_article表中的相应字段。......
2023-11-04
表单令牌是一项非常实用的技术,它使用服务器的Session功能,实现对表单数据来源的检测及校验,防止数据被伪造和篡改。传统的表单提交一般使用权限功能来检测。例如在留言系统中,当用户提交留言数据时,后台的程序首先会启动基本的数据校验程序,例如数据是否为空,某个字段是否填写正确等,如果一切符合条件,则允许提交,否则终止操作。
假设用户在站外,例如本地上模拟同样的数据提交给服务器,由于没有做表单验证功能,所以这些数据也会被提交,这无疑给网站留下了隐式的安全隐患,就算是使用传统的会员权限来判断,如果没有数据来源验证,也是不可靠的(用户可以通过修改head等信息实现cookie欺骗)。
ThinkPHP提供的表单令牌功能很好地解决了数据来源校验,防止跨站提交。当表单令牌开启后,在存在表单的视图中会生成随机令牌(默认为随机的MD5字符串)。当数据被保存到数据库前,开发人员可以使用Session对令牌进行校验,如图8-1所示。
图8-1 表单令牌验证过程
表单令牌默认已经开启,默认情况下生成的表单令牌使用随机HASH字符串,并且字段名称为__HASH__,如以下代码所示。
如上述代码所示,当系统视图引擎遇到form标签时,就会在表单后面追加表单令牌,如果需要关闭,可以在当前动作中配置C('TOKEN_ON',false)。表单生成后,就可以在动作中验证表单来源了,如以下代码所示。(www.chuimin.cn)
__HASH__是默认生成的隐藏字段名,开发人员可以通过配置文件进行更改。此外,表单令牌的加密方式等都是可以自定义的,如以下代码所示。
需要注意的是,如果一个页面中存在多个表单,那么只能有一个表单存在令牌。多个表单时,使用{__TOKEN__}标识令牌生成区,如以下代码所示。
上述代码中,定义了2个表单,因为只有form2表单定义了{__TOKEN__}标识,所以只有该表单存在表单令牌。
有关PHP MVC开发实战的文章
_map属性可以将HTML表单中的元素以别名的方式映射到真实的数据表字段,和其他属性一样,_map属性也必须定义在自定义模型中,该属性的值为二维数组,下面以7.1.3节内容为基础,修改add_article.html表单元素与add动作代码,并在Article模型中创建createAdd方法,用于处理表单数据。接下来在Article模型中使用_map属性将这些元素映射为tpk_article表中的相应字段。......
2023-11-04
浏览者通过表单元素将表单数据填写完整后,要将表单提交到服务器,才能完成此次与服务器的数据交互。表3.7表单的属性以下代码演示了表单的属性。名/值对中的名称即为表单元素的name 属性值,则名/值对中的值是指表单元素的value 属性值。将例3.13 中的表单改为get 方式提交。表单数据提交到哪个程序处理由表单的action 属性设置,浏览器以哪种方式提交表单数据由表单的method 属性设置。图3.26发表新话题的表单......
2023-10-19
网桥将数据帧送到数据链路层进行差错校验,再送到物理层,通过物理传输介质送到另一个子网或网段。网桥能够互联两个采用不同数据链路层协议、不同传输速率、不同传输介质的网络。网桥在两个或两个以上的网段之间存储或转发数据帧,它所连接的不同网段之间在介质、电气接口和数据速率上可以存在差异。网桥两端的协议和地址空间保持一致。这样,网桥起到了过滤信号包的作用,利用它可以控制网络拥塞,同时隔离出现了问题的链路。......
2023-11-22
PROFINET和OPC在DCOM中享有相同的技术基础。·每个OPC服务器可通过一个标准的适配器作为PROFINET节点运行。PROFINET的功能远比OPC的功能强大。PROFINET提供了自动化解决方案所需要的实时能力。......
2023-11-20
在实际Web 项目的开发过程中,为了减轻服务器的负担,很多HTML 表单都需要用JavaScript 编写的代码进行验证。由于这里的验证比较集中,所以就另外创建一个Javascript 文件用于存放diaocha.html 的表单验证代码。图3.13建立js 文件然后在js 文件夹下建立diaocha.js 文件。右键单击js 文件夹,在弹出的快捷菜单中选择“New”“File”。将弹出如图3.13 所示的窗口,在窗口中填写文件名diaocha.js。diaocha.js 文件内容如下:JavaScript 验证一般是先定位元素,然后获取元素的值,最后进行判断。图3.14JS 表单验证......
2023-11-21
图9.5-3 数据装载显示2.CNC系统数据校验选择引导系统的系统数据校验项目,可以检查、校验CNC系统数据。5)按软功能键〖SELECT〗退出系统数据校验操作。图9.5-4 系统数据校验显示2)按软功能键〖SELECT〗选定,LCD显示图9.5-4所示的CNC系统数据文件目录,文件较多时分多页显示。6)删除完成后,状态行显示“DELETE COMPLETE”。......
2023-06-25
因为数据验证关系到数据的完整性和规范性,所以数据验证需要开发人员认真调试。ThinkPHP提供了简单、易用的表单字段验证处理功能,能够极大地提高开发效率。表8-1 系统内置的表单验证规则2.配置验证规则验证规则本身支持验证错误提示,所以在ThinkPHP中使用表单验证规则非常简单。......
2023-11-04
下面将使用ThinkPHP 3.0创建一个简单Web应用,该应用部署方式将使用模块分组。通过URL访问到index.php文件,ThinkPHP将会初始化项目环境,并创建相应的目录结构,此时并没有开启模块分组功能,需要在公共配置文件中配置。可见无论是使用传统的多入口文件部署方式,还是使用单入口的模块分组方式,ThinkPHP都能够完美地解决项目部署的问题。......
2023-11-04
相关推荐