利用Seeion快速解决重复提交的问题

作者: wxfeng 分类: linux 发布时间: 2018-11-12 18:50

表单部分添加:

<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);
}

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注