ThinkPHP自动令牌验证(附实例)
一、数据表结构
user表结构如下:
id username password
二、view模板部分
/view/index.html页面如下:
1
2
3
4
5
6 <form action="__URL__/edit" method="post">
<input type="text" name="id" />
<input type="text" name="username" />
<input type="password" name="password" />
<input type="submit" name="sub" value="提交" />
</form> 三、action部分:
/Controller/IndexController.class.php页面如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public function index(){ $this->display(); exit(); } public function addit(){ $User = M("User"); // 实例化User对象 // 手动进行令牌验证 if (!$User->autoCheckToken($_POST)){ dump('no'); }else{ dump('yes'); } } }
thinkphp配置令牌验证: 功能:可以有效防止表单的远程提交等安全防护。
在生成的目录中找到common/conf/config.php中添加如下配置:
1
2
3 'TOKEN_ON' => true, //是否开启令牌验证
'TOKEN_NAME' => 'token',// 令牌验证的表单隐藏字段名称
'TOKEN_TYPE' => 'md5',//令牌验证哈希规则 在生成的目录中找到common/conf文件夹中添加tags.php并写入以下代码:
1
2
3 <?php return array( 'view_filter' => array('Behavior\TokenBuildBehavior'), );
自动令牌会向当前SESSION会话当中放上一个md5加密的字符串。并将这个字符串以隐藏域的形式插入到表单的form之前。这个字符串出现在两个地方,一个是在SESSION当中,另一个就是在表单当中。当你提交表单后,服务器第一件事就是对比这个SESSION信息,如果正确的话,准许表单提交,否则不允许提交。
查看index.html的的源代码会看到在表单form的结束标志之前会多了一个自动生成的隐藏域
1 <input type="hidden" name="token" value="eef419c3d14c9c93caa7627eedaba4a5" /> 验证令牌是否生效:
1
2
3 if (!$User->autoCheckToken($_POST)){
// 令牌验证错误
}
ThinkPHP自动令牌验证(附实例)的更多相关文章
- ThinkPHP表单令牌验证功能详细介绍
注:TP版本为3.1.3 在ThinkPHP框架下,两次提交同一个表单,比如提交信息后在浏览器点击后退退回上次的页面,重新点击提交按钮,就会提示“表单令牌错误”的信息. ThinkPHP新版内置了表单 ...
- ThinkPHP 自动验证实例
//array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]),protected $_validate = array( ); ThinkPHP 自动验证定义的附加规则如下: r ...
- ThinkPHP 自动验证与自动填充无效可能的原因(转)
自动验证与自动填充是在使用ThinkPHP时经常用到的功能,但偶尔会遇到自动验证与自动填充无效的情况,本文就ThinkPHP 自动验证与自动填充无效可能的原因做一些分析. create() Think ...
- <转>thinkphp自动验证无效的问题
新手入门thinkphp,试用自动验证表单输入数据功能,却发现怎么都不能调用自动验证,自动验证无效,原因竟是一个小细节的疏忽,学习一定要细心啊! Action方法: IndexAction下的adds ...
- ThinkPHP 自动验证与自动填充无效可能的原因
原文链接:http://www.5idev.com/p-thinkphp_validate_auto_Invalid.shtml 自动验证与自动填充是在使用ThinkPHP时经常用到的功能,但偶尔会遇 ...
- ThinkPHP 自动创建数据、自动验证、自动完成详细例子介绍(十九)
原文:ThinkPHP 自动创建数据.自动验证.自动完成详细例子介绍(十九) 1:自动创建数据 //$name=$_POST['name']; //$password=$_POST['password ...
- thinkphp自动验证分析
thinkphp有一个自动验证的方法验证规则如下 array( array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]), array(验证字段2,验证规则,错误提示,[验证条件 ...
- thinkphp自动验证无效的问题
新手入门thinkphp,试用自动验证表单输入数据功能,却发现怎么都不能调用自动验证,自动验证无效,原因竟是一个小细节的疏忽,学习一定要细心啊! Action方法: IndexAction下的adds ...
- ASP.NET Core Razor页面禁用防伪令牌验证
在这篇短文中,我将向您介绍如何ASP.NET Core Razor页面中禁用防伪令牌验证. Razor页面是ASP.NET Core 2.0中增加的一个页面控制器框架,用于构建动态的.数据驱动的网站: ...
随机推荐
- 【排序】希尔排序,C++实现
原创博文,转载请注明出处! 本文代码的github地址 # 基本思路 希尔排序是”直接插入排序“的改进版,也称为“缩小增量排序”.基本原理:先将待排序的数组元素分成多个序列,然后对每个子序 ...
- JAXP使用Stax API时格式化输出XML 2
之前实现的一个版本:http://www.cnblogs.com/lyhtbc/p/jaxp-pretty-format-validate-validation-stax-stax2.html 这个版 ...
- c# 图片转流 流转文件
//----引入必要的命名空间 using System.IO; using System.Drawing.Imaging; //----代码部分----// private byte[] photo ...
- atom的设置
1.隐藏Keybinding Resolver Packages->Keybinding Resolver->Toggle.
- PHP 数组转json_encode,单个数组下标为了0时不对??
在 php 数组转json时,假如 有一个数组下标是顺序的,他json_encode后会直接变成一个简版二维json, $arr = ['1'=>1,'2'=>2]; echo (json ...
- js中confirm揭示三个按钮“是”“否”“取消”
js中confirm提示三个按钮“是”“否”“取消” 重载DOM中confirm window.confirm = function(str) { str=str.replace(/\'/g, & ...
- 【sqlite】VS2013中C#读取SQLite数据
从“火车采集器”(免费版)中获取的网页数据,本地只能自动保存为SQLite数据,(在工具-数据转换中切换).收费版还可以用MySql.SqlServer 今天就记录一下C#读取Sqlite数据 创建一 ...
- 顺丰品牌研究http://www.kiees.cn/sf/express/brand.htm
顺丰控股股份有限公司,顺丰速运SF,始于1993年,国内速递行业中民族品牌的佼佼者,以其速度快/安全性能高蜚声业界,现已开通海外快递服务,2017年2月完成借壳上市 1993年,顺丰诞生于广东顺德.自 ...
- 谷歌被墙后,能够搜索的ip地址
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/langresser/article/details/32339707 http://209.116. ...
- win10下启动zkui
zkui是一个开源的zookeeper可视化工具,现在看下我们怎么启动这个工具.首先下载源码(我把它放在E:\workspace): git clone https://github.com/Deem ...