表单令牌

2018-01-15  本文已影响0人  Hoe王666

首先在项目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();}

上一篇 下一篇

猜你喜欢

热点阅读