表单令牌 防止重复提交
有人说 TOKEN 在3.2中无法使用,就研究了一下,希望对大家有帮助。
无法正常原因:
原来的tags.php 被迁移到以下文件
ThinkPHP\Mode\common.php
并且在:
'template_filter'=> array(
'Behavior\ContentReplaceBehavior', // 模板输出替换
),
只加了一个行为,对比3.1少了 TokenBuildBehavior
所以
方法1:只要我们在Application\Common\Conf创建 tags.php文件
加入:
return array(
'view_filter' => array(
'Behavior\TokenBuildBehavior', // 表单令牌
),
);
方法2:在ThinkPHP\Mode\common.php 加入
'Behavior\TokenBuildBehavior', // 表单令牌
//'配置项'=>'配置值'
'view_filter' => array('Behavior\TokenBuildBehavior'),
'TOKEN_ON' => true, // 是否开启令牌验证 默认关闭
'TOKEN_NAME' => '__hash__', // 令牌验证的表单隐藏字段名称,默认为__hash__
'TOKEN_TYPE' => 'md5', //令牌哈希验证规则 默认为MD5
create的时候会自动进行令牌验证
- if (!$User->autoCheckToken($_POST)){
- // 令牌验证错误
- }手动进行表单验证
- C('TOKEN_ON',false);取消表单验证