利用Seeion快速解决重复提交的问题
表单部分添加:
<input id="formtoken" type="hidden" value="<?php echo createFormToken();?>">
提交的地方添加:
if(!checkFormToken($formtoken)){
exit("请勿重复操作");
}
公共文件中添加以下三个函数供以上两个地方引用:
//给表单创建TOKEN,防止重复提交
function createFormToken() {
$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));
$formtoken = authformcode($code);
$_SESSION['FORMTOKEN'] = $formtoken;
return $formtoken;
}
//判断TOKEN,防止重复提交
function checkFormToken($token) {
if ($token == $_SESSION['FORMTOKEN']) {
$_SESSION['FORMTOKEN'] = NULL;
return TRUE;
} else {
return FALSE;
}
}
/* 加密TOKEN */
function authformcode($str) {
$key = "mofang";
$str = substr(md5($str), 8, 10);
return md5($key . $str);
}


