预防按钮的多次点击 恶意刷新-程序员宅基地

技术标签: button  session  function  asp.net  google  ASP.NET经验整理  object  

 
今日在做一个新闻系统的评论时.
想到了预防
" 提交 " 按钮的多次点击的问提
(prevent multiple clicks of a submit button
in ASP.NET).
以前碰到此类问提总是用重定位页面来解决.
这次我想找到一个一劳永逸的办法.

通过查讯Google,找到了一些代码,挑选一些较好的修改了一下。


public void page_load(Object obj,EventArgs e)
{
    btn.Attributes.Add(
" onclick " , " state=true; " );
    StringBuilder sb
= new StringBuilder();
    sb.Append(
" if (!state) return; " );
    sb.Append(
" var button=document.getElementById('btn'); " );
    sb.Append(
" button.value=" Please Wait... "; " );
    sb.Append(
" document.body.style.cursor='wait'; " );
    sb.Append(
" button.disabled=true; " );

string strScript = " <script> " ;
strScript
= strScript + " var state=false; " ;

// 将函数绑定到页面的onbeforeunload事件:
strScript = strScript + " window.attachEvent('onbeforeunload',function(){ " + sb.ToString() + " }); " ;
strScript
= strScript + " </ " + " script> " ;
Page.RegisterStartupScript(
" onbeforeunload " ,strScript);
}

private void Submit_Click(Object sender, EventArgs e){
   
// 模拟长时间的按钮处理
    System.Threading.Thread.Sleep( 2000 );
    Response.Write(
" <script>alert('bbbbbb!!'); " + " </ " + " script> " );

}


< asp:button id = " btn " Text = " Submit " OnClick = " Submit_Click " runat = " server " />


修改好的这个例子原理是提交后将按钮置于一定时间的无效状态.
仅能防止一些,因网速慢而心急的用户造成的误点击.
对于恶意的多次刷新而形成的多次提交还是没有办法解决.
(不过应该可通过页面的onbeforeunload事件解决)

不过对于恶意的刷新

还是 应该在服务器端 使用Session之类的来判断.保险:)

<script>

var state=false;
window.attachEvent('onbeforeunload',function()
{
    if (!state)
    return;
    var button=document.getElementById('btn');
    button.value=' Please Wait... ';
    document.body.style.cursor='wait';
    button.disabled=true;
}
);
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zj1103/article/details/3416177

智能推荐

功能安全 李艳文_李艳文:智能网联全新安全问题凸显 相关自动驾驶事故逐年增加...-程序员宅基地

[摘要]随着智能网联汽车先进功能越来越多,集成度、复杂性增加,新安全问题开始凸显,由功能安全和预期功能安全引发的自动驾驶事故比例逐渐增多。8月13日-15日,以“新变局 新挑战 新思路——引领中国汽车新征程”为主题的2020年中国汽车论坛在上海隆重召开。本次论坛上,工业和信息化部装备工业发展中心李艳文发表了演讲。他表示,随着智能网联汽车先进功能越来越多,集成度、复杂性增加,新安全问题开始凸显,由功..._工业和信息化部装备工业发展中心 李艳文

基于Dlib模型实现驾驶员疲劳检测项目-程序员宅基地

自动驾驶驾驶员疲劳在人体面部表情中表现出大致三个类型:打哈欠(嘴巴张大且相对较长时间保持这一状态)、眨眼(或眼睛微闭,此时眨眼次数增多,且眨眼速度变慢)、点头(瞌睡点头)。本实验从人脸朝向、位置、瞳孔朝向、眼睛开合度、眨眼频率、瞳孔收缩率等数据入手,并通过这些数据,实时地计算出驾驶员的注意力集中程度,分析驾驶员是否疲劳驾驶和及时作出安全提示。例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

k8s笔记2--基于k8s的服务开发、部署、维护介绍_k8s服务管理基于-程序员宅基地

k8s笔记2--基于k8s的服务开发、部署、维护介绍1 基础流程2 服务开发3 服务部署4 服务维护4.1 常见服务维护流程4.2 不停服维护说明5 说明随着 k8s 对快速发展,越来越多的企业开始拥抱云原生,企业服务上云已经成为一种趋势。在这种情况下,服务的开发、部署、维护也随之发生了些许变化,本文主要对这种变化加以介绍。1 基础流程传统应用的开发基本为:应用开发|测试->应用部署到物理->维护(发新版本)。k8s环境下的应用开发更新为:应用开发|测试->编写Dockerfile_k8s服务管理基于

mac查看端口是否被占用_mac 看端口是否重复-程序员宅基地

sudo lsof -I:端口号_mac 看端口是否重复

Python实现制作原创图片的方法(文字转图片)_python 将图片修改为原创-程序员宅基地

我们做SEO的期间,有一个环节让很多人为之头痛,那就是文章的采集发布,特别是文章里面的图片让人头痛,为啥?因为现在有很多类似视觉中国那种专门玩图片版权的公司,据Steven的了解在国内不少于几十家。那么你采集的文章中的图片如果刚好是人家公司的版权图片,而且你的网站也起来的不错的情况下,那么人家就可能给你发送律师函。好家伙,你辛辛苦苦的做站,没赚多少钱呢,人家一张图片就索赔1~2万,你吃得消吗?Steven目前给一家公司做SEO顾问的时候,也出现了这种情况,就是图片侵权。一张图片2W,明码标价。而且你还说_python 将图片修改为原创

Spring Boot中使用LDAP来统一管理用户信息_ldap.urls_HD243608836的博客-程序员宅基地

很多时候,我们在构建系统的时候都会自己创建用户管理体系,这对于开发人员来说并不是什么难事,但是当我们需要维护多个不同系统并且相同用户跨系统使用的情况下,如果每个系统维护自己的用户信息,那么此时用户信息的同步就会变的比较麻烦,对于用户自身来说也会非常困扰,很容易出现不同系统密码不一致啊等情况出现。如果此时我们引入LDAP来集中存储用户的基本信息并提供统一的读写接口和校验机制,那么这样的问题就比较容易解决了。下面就来说说当我们使用Spring Boot开发的时候,如何来访问LDAP服务端。一、LDAP简._ldap.urls

随便推点

HTML笔记之特殊符号加a标签-程序员宅基地

HTML笔记之特殊符号加a标签 HTML标签之特殊符号加a标签 HTML标签之特殊符号加a标签 小于号:-------------<------------------------------------------- 大于号:-------------->-----

Vue中如何对数值进行保留小数点后两位?_vue保留小数点后两位-程序员宅基地

// 截取当前数据到小数点后两位 (四舍五入) let realVal = parseFloat(value).toFixed(2) // 先截取当前数据到小数点后三位 (不会四舍五入) let tempVal = parseFloat(value).toFixed(3) // 再取该数值长度-1的内容 let realVal = tempVal.substring(0, tempVal.length - 1)..._vue保留小数点后两位

Redis数据结构之哈希详解-程序员宅基地

简介Redis本身是键值对数据库,但是值对应多种数据结构,其中就有哈希(即键值对),值中的键值对称为field和value。基本命令命令命令描述hset key field value设置哈希,和字符串类似,也提供了hsetnx命令,不过是nx是针对fieldhget key field获取值hdel key field [field...]删除fie...

C语言读取文件的内容_c语言读取文件里的东西药品-程序员宅基地

有的时候,我们写程序时,需要读取文件的内容。_c语言读取文件里的东西药品

Java的安装和配置──For Ubuntu (包括插件)-程序员宅基地

-05-09 17:16一、Fedora篇Fedora8 中有三种Java可供选择──官方的SunJava、开源的GNU的gcj以及基于SunJava的开源JDK(OpenJDK)。标准的Fedora8 安装会安装IceTea。它基于OpenJDK,比GNU的gcj复杂一些,但是其表现与SunJava仍然有一定的差别。在Fedora8的发行注记中 可以得到关于他们的更多的消息。1、Ic...

已将该虚拟机配置为使用 64 位客户机操作系统。但是,无法执行 64 位操作。 此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态。 如果已在 BIOS/固件设置中禁用 In_win7此主机支持 intel vt-x,但 intel vt-x 处于禁用状态。 如果已在 bio-程序员宅基地

装上VMWare,运行虚拟机发现提示无法执行64位操作。本人系统是win7,64位系统。弄了一天,一顿度娘,发现千篇一律都是检测CPU支不支持虚拟化,先进BIOS界面。每个电脑进去的方式不一样…将disabled(关闭)改为 enabled(开启);保存设置,重启即可。..._win7此主机支持 intel vt-x,但 intel vt-x 处于禁用状态。 如果已在 bios/固件设

推荐文章

热门文章

相关标签