1.首先,在项目的functions.php中添加如下方法
-
//创建TOKEN
-
function createToken() {
-
$code = chr(mt_rand(0xB0, 0xF7)) . chr(mt_rand(0xA1, 0xFE)) . chr(mt_rand(0xB0, 0xF7)) . chr(mt_rand(0xA1, 0xFE)) . chr(mt_rand(0xB0, 0xF7)) . chr(mt_rand(0xA1, 0xFE));
-
session('TOKEN', authcode($code));
-
}
-
//判断TOKEN
-
function checkToken($token) {
-
if ($token == session('TOKEN')) {
-
session('TOKEN', NULL);
-
return TRUE;
-
} else {
-
return FALSE;
-
}
-
}
-
/* 加密TOKEN */
-
function authcode($str) {
-
$key = "YOURKEY";
-
$str = substr(md5($str), 8, 10);
-
return md5($key . $str);
-
}
2.在表单页面form中填入以下HTML代码
<input type="hidden" name="TOKEN" value="{:session('TOKEN')}" />
3.在页面展示前调用creatToken()方法生成token,在相应控制器POST请求中 使用 checkToken() 进行判断是否重复提交
-
if(IS_POST)
-
{
-
$post_token = I('post.TOKEN');
-
if(!checkToken($post_token)){
-
$this->error('请不要重复提交页面',U('User/Index/login'));
-
}
-
}