yii防止延迟用户多次点击按钮重复提交数据
是不是被用户的行为所困扰?
一、
一个表单用户点击提交按钮了N次,这也导致了数据提交了N次。
为了此受到了测试的欺辱,受到了老板的批评?
不用怕,它就是来拯救你的。
第一步:打开命令行,敲入 composer require light\yii2-lock-form=~1.0.0
第二步:上个厕所
第三步:如果你的项目中已经使用了 yii2-bootstrap, 那么好,只需要在的你的 AppAsset 「whatever, 只要你全局依赖的就成」
轻轻的敲入:
'depends' => [
//other depends
'light\widgets\LockBsFormAsset'
]
如果你没使用 yii2-bootstrap 也能满足您:你只需要将 light\widgets\LockBsFormAsset 替换成 light\widgets\LockFormAsset.
还需要做什么?
如果还需要做的话,那就是定制一下 Lock 用语,
Html::submitButton('提交', ['data-loading-text' => '正在提交数据, 不让你点,哼'])
说了这么多,东西在那儿?
https://github.com/lichunqiang/yii2-lock-form
重要的事情要说三遍:star,star, star, little star, 一闪一闪亮晶晶。
二、
表单提交时,由于网速等原因,会出现重复提交的现象。
一、从前端的角度:增加遮罩
二、从后端的角度:使用session。
/可复用代码
$session = Yii::app()->session;
$user_id = $this->user->id;
$sessionKey = $user_id.'_is_sending';
if(isset($session[$sessionKey])){
$first_submit_time = $session[$sessionKey];
$current_time = time();
if($current_time - $first_submit_time < 10){
$session[$sessionKey] = $current_time;
$this->response(array('status'=>1, 'msg'=>'不能在10秒钟内连续发送两次。'));
}else{
unset($session[$sessionKey]);//超过限制时间,释放session";
}
}
//第一次点击确认按钮时执行
if(!isset($session[$sessionKey])){
$session[$sessionKey] = time();
}
yii防止延迟用户多次点击按钮重复提交数据的更多相关文章
- php防止浏览器点击返回按钮重复提交数据
<!--html中存放隐藏域数据--> <input type="hidden" value='{$sun_nums}' name='sub_nums' /> ...
- 防止asp.net连续点击按钮重复提交
1.在Page_Load中添加如下代码: protected void Page_Load(object sender, EventArgs e) { this.btnEdit.Attributes[ ...
- JavaScript 弹出窗体点击按钮返回选择数据的实现
首先是父页面的代码: <head runat="server"> <title>无标题页</title> <%-- <script ...
- ASP.NET怎么防止多次点击提交按钮重复提交
今天做一个系统,由于服务器有点慢,所以常会被点击两次或三次,提交的数据就是多次了.所以要让按钮点击后,不能再次点击. 对于一个按钮,要让变成恢色的,只要this.disabled=true就可以了,可 ...
- Xamarin.Forms ListView点击按钮刷新最新数据
最近在研究Xamarin的东西,做到ListView遇到了一些瓶颈,像在数据庞大的情况下,该怎么针对ListView中的数据分组呢? 基于能力有限的问题,暂时写了一个只可以实现功能的临时解决方案,毕竟 ...
- .net C# 利用Session防重复点击防重复提交
<body> <form id="form1" runat="server"> <div> < ...
- GrideVlew提供点击按钮添加新数据,单击项目修改,长按删除功能
package com.example.wang.myapplication; import android.app.AlertDialog; import android.content.Dialo ...
- 微信小程序开发——连续快速点击按钮调用小程序api返回后仍然自动重新调用的异常处理
前言: 小程序开发中诸如获取用户手机号码.调起微信支付.领取卡券等api都是会有一定的延迟的.也就是说通过点击按钮调用这些api的时候,从点击按钮调用api,到支付页面或者领取卡券界面展示出来是需要一 ...
- 简易用户管理系统-前端实现(表单&提交请求&button$基础)
laravel框架编写简易用户管理系统,前端Layui框架. 1.动态生成列表项 实现效果 PHP后台传入用户对象($users). 前端页面接收数据传入table. 逻辑就是在生成表格时,遍历传来的 ...
随机推荐
- day09内存管理
复习 ''' 文件处理 1.操作文件的三步骤 -- 打开文件:硬盘的空间被操作系统持有 | 文件对象被应用程序持续 -- 操作文件:读写操作 -- 释放文件:释放操作系统对硬盘空间的持有 2.基础的读 ...
- Eclipse/MyEclipse导入导出注释模板
1.Eclipse/MyEclipse导入注释模板 (1)打开Eclipse/MyEclipse工具,打开或创建一个Java工程,点击菜单Window->Preferences弹出首选项设置窗口 ...
- 工作中常用的 Shell 命令及技巧
调试 bash 脚本的技巧 加 -x 参数运行 bash 脚本时,会显示执行的语句 # 也可以在 demo.sh 中加上 set -x bash -x demo.sh 设置环境变量,然后通过如上方式运 ...
- win10家庭版安装Docker for Windows
0. 背景 硬件:小米笔记本 Air 13/Inter Core i7-7500U 操作系统:Windows 10 家庭中文版 补丁:截止2019/1/25最新稳定补丁 Docker:Docker W ...
- 51nod 1201 整数划分 dp
1201 整数划分 基准时间限制:1 秒 空间限制:131072 KB 收藏 关注 将N分为若干个不同整数的和,有多少种不同的划分方式,例如:n = 6,{6} {1,5} {2,4} {1,2 ...
- julia 安装
https://julialang.org/downloads/ 下载安装程序,拖拽完成安装
- Phpstorm数组对齐设置
进入 Editor > Code Style > PHP > Wrapping and Braces , 勾选 Align consecutive assignments 和 Ali ...
- js二分查找算法
二分查找高效的前提是数据结构是有序的.就好比猜1~100之间的数,先猜50,如果太大了就猜25,如果太小了就猜75.每一次都猜最大值和最小值的中间点. 1.随机生成100个0~100之间的随机数. v ...
- 雷林鹏分享:CodeIgniter 数据库操作
在平时项目开发过程中,除了处理那些繁琐的逻辑过程外,还有一个重要的任务就是对数据库的操作处理.这里总结下自己平时使用CI过程中使用的如何对数据库进行操作处理. 在CI框架中,我们一般会把对数据库的操作 ...
- Linux Mint 18.1 MAME 成功运行
折腾了一个下午,终于成功可以用手柄接着chromebook 来玩街机游戏了(灌篮高手.拳皇.突击骑兵) 在http://sdlmame.wallyweek.org/download/ 下载对应的mam ...