关于服务器端防止短时间内重复提交的问题 [ 2.0 版本 ]
大家好,测试了一天,实际收效甚微。
具体controller如下。
public function actionCreate() {
$session = Yii::$app->session;
$sessionKey = Yii::$app->user->id . '.issending';
Yii::warning(isset($session[$sessionKey]));
if (!isset($session[$sessionKey])) {
$session[$sessionKey] = microtime();
Yii::warning($session[$sessionKey]);
$model = new book();
$model->load(Yii::$app->request->post());
if ($model->save()) {
\Yii::$app->getSession()->setFlash('info', '新增完成');
} else {
\Yii::$app->getSession()->setFlash('error', '新增失败');
}
}
unset($session[$sessionKey]);
$this->redirect(['index']);
}
作用是来防止段时间内重复提交的。
但是在我在前台 快速双击 提交按钮后,依然会产生2(或实际点击次数)条一样的数据
日志文件中 因为 Yii::warning(isset($session[$sessionKey]));
查产生的内容 全部为false。
客户端的js屏蔽按钮,已经实现(本测试中取消了屏蔽用来模拟客户端屏蔽js的情况)。
model部分unique的规则也已实现。(本测试中取消了unique规则,模拟实际上确实容许重复的情况)
不知道大家是否有什么好的方法,来避免重复提交。
谢谢大家。
最佳答案
xjdata
注册时间:2011-12-07
最后登录:2024-05-05
在线时长:112小时38分
最后登录:2024-05-05
在线时长:112小时38分
- 粉丝23
- 金钱14169
- 威望75
- 积分16039