首先在项目function.php 定义几个方法。
//创建TOKEN
function creatToken() {
$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));}//判断TOKENfunction checkToken($token) {if($token == session('TOKEN')) { session('TOKEN',NULL);returnTRUE; }else{returnFALSE; }}
/* 加密TOKEN */
function authcode($str) {
$key ="ANDIAMON";
$str = substr(md5($str),8,10);
returnmd5($key . $str);}
在需要防止重复提交的表单form中加入相关代码
...
1.在页面展示前调用creatToken()方法生成token。
2.在相应控制器POST请求中 使用 checkToken() 进行判断是否重复提交。
if(IS_POST)
{
//防止重复提交 如果重复提交跳转至相关页面if(!checkToken($_POST['TOKEN']))
{
$this->redirect('index/index');return;
}
//下面相关业务代码
}else{
//创建token
creatToken();
;$this->display();}
网友评论