柚子快报怎么注册778899分享:防止表单重复提交

http://yzkb.51969.com/

引言

表单重复提交是在多用户Web应用中最常见、带来很多麻烦的一个问题。有很多的应用场景都会遇到重复提交问题,比如:

点击提交按钮两次。

点击刷新按钮。

使用浏览器后退按钮重复之前的操作,导致重复提交表单。

如何解决?

通过创建令牌,验证,销毁。来避免一个令牌,产出多次表单提交。

1.令牌函数

//创建TOKEN

function create_token() {

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

// 加密

$token = md5("ADMIN" . substr(md5($code), 8, 10));

session('TOKEN', $token);

}

//判断TOKEN

function check_token($token) {

if ($token == session('TOKEN')) {

session('TOKEN', NULL);

return TRUE;

} else {

return FALSE;

}

}

2.在页面出现前,创建令牌

// 创建令牌,防止表单重复提交

create_token();

return $this->fetch();

3.在表单中,加入令牌,并赋值

4.提交表单后验证令牌

if (request()->isPost()) {

if (!check_token($_POST['TOKEN'])) {

$this->redirect('LiveExtra/bannerList');

return;

}

if (input('?post.id')) {

// 编辑

return "编辑";

} else {

// 添加

return "添加";

}

}

小结

通过唯一的令牌机制,可以避免表单重复提交的问题。如果数据很重要的时候,可以这样处理。

柚子快报怎么注册778899分享:防止表单重复提交

http://yzkb.51969.com/

相关阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。
大家都在看: