表单令牌可以放置重复提交,同时对机器人有一定的拦截作用,在 Frphp 的支持下(利用 cookie),实现这样的功能是非常简单的,函数说明:
**1、setToken() 设置token**
在表单中使用隐藏域设置令牌,如:
~~~
<form action="" method="post">
<input type="text" name="name" />
<input type="hidden" name="token" value="<?php echo setToken();?>" />
<input type="submit" value="提交"/>
</form>
~~~
**2、getToken 获取令牌的值**
在控制器内获取表单提交信息,并校验令牌,如:
~~~
<?php
class indexController extends FrBase{
public function index(){
if(FR_POST){
$token = getToken();
echo "系统记录的 token:{$token}<br />";
echo "POST数据中的 token:{$_POST['__token__']}<br />";
if($token == $_POST['__token__']){
echo 'ok';
}else{
echo 'token 错误';
}
}
}
}
~~~
**说明:**
getToken() 获取token 后会注销 cookie 中记录的 token,只能获取一次哦 ^\_^
**3、数据验证过程中自动验证token**
3.1 遵循规则:表单内隐藏域的名称为:“\_\_token\_\_”
~~~
<input type="hidden" name="__token__" value="<?php echo setToken();?>" />
~~~
3.2 在进行数据验证是设置验证token,如:
~~~
<?php
class indexController extends FrBase{
public function index(){
if(FR_POST){
$checkRules = array(
'name' => array('string', '2,10', '姓名应为 2 - 10 字符')
);
//第三个参数为可选参数,设置为true时自动检查 Token
$checker = new FrPHP\tools\dataChecker($_POST, $checkRules, true);
$res = $checker->check();
if($res){
echo '验证通过';
}else{
echo $checker->error;
}
}
}
}
~~~
- 第一章:快速开始
- 1.1 简介和条款
- 1.2 环境和伪静态
- 1.3 目录结构及命名
- 1.4 初始化、原理、分组
- 1.5 兼容7.2php
- 第二章 控制器和路由
- 2.1 创建控制器
- 2.2 基础控制器
- 2.3 URL解析
- 2.4 自定义路由
- 2.5 URL路由生成
- 第三章 数据和模型
- 3.1 数据库的配置
- 3.2 获取数据库对象
- 3.3 数据库操作
- 3.4 数据分页详情
- 3.5 事务操作&处理
- 3.6 数据验证
- 3.7 表单验证
- 3.8 全局模型创建与调用
- 第四章 视图
- 4.1 视图文件的创建
- 4.2 视图调用及引用
- 4.3 视图文件路径模式
- 第五章 会话机制
- 5.1 cookie 操作
- 5.2 文件型 SEssion
- 5.3 session[memcache]
- 5.4 session[redis]
- 第六章 缓存机制
- 6.1 缓存的简介和配置
- 6.2 文件型缓存
- 6.3 memcache 形式的缓存
- 6.4 redis 形式的缓存
- 第七章 配置 常量 语言
- 7.1 全局配置&分组配置
- 7.2 预定义常量
- 7.3 语言包使用说明
- 第八章 工具扩展
- 8.1 函数小工具
- 8.2 工具类函数
- 第九章 安全配置扩展
- 9.1 框架安全部署
- 9.2 常规安全配置
- 9.3 如何去扩展
- 附录:扩展工具类
- 一 、图片处理类
- 二、文件上传类
- 三、IP地址获取类