你在登錄頁面設個全局變量不就行了,一次不成功就加一,加到三就關閉窗體。
这种所谓"输入三次错误"就锁定窗体不让登陆,那么输入三次错误是指在多大时间间隔上的计数?那么解除限制的范围是多大?
在.NET中没有“全局变量”的说法,但是可以使用静态变量来保存值。
在类中声明一个public static int xxx的变量。
但是接下来的问题是:这个静态变量不是针对某个会话。这将导致你的网站无论对谁,允许输入三次错误,之后无论是谁都无法登陆你的网站。
最佳的做法是:根据你所述“三次”的限制在多大范围内发生?在多大范围或多长时间尺度上能解除掉(总不能让用户再也不能登陆吧?)
这样,可以考虑将其放置在Session对象中。每一个Session对应一个用户会话,其他用户不受影响。但是用户如果新开一个浏览器再访问,相当于新建一个会话,用户可重复新开浏览器来规避你的限制。
或者将其发送到Cookie中,通过设置Cookie的过期时间来限制用户登陆在多大范围内解锁。但是Cookie可以在客户端被禁用、删除或修改。
或者将登陆次数记录在数据库或其他永久存储位置,当然你得不厌其烦地去处理那些受限的用户,手动帮他们解锁。
如果你不想麻烦的话,可以创建Windows服务,配置在服务器上运行,设定计时器在规定时间间隔引发事件控制解锁。
在ASP.NET中不要尝试使用静态变量来存储内容。更不要把希望保持的值存储在对象中的变量中,因为每次请求,都是实例化新对象,值会丢失。应该使用ViewState、Session等途径来保持值。至于他们的生命周期,使用范围,那就自己学习吧