概述:输错三次禁止登陆,15分钟后才能继续。

图示:

Form1代码:

using System;

using System.Configuration;

using System.Data.SqlClient;

using System.Windows.Forms;

namespace 登录验证项目

{
     public partial class Form1 : Form
     {
         public Form1()
         {
             InitializeComponent();
         }

private void button1_Click(object sender, EventArgs e)
         {
             //连接数据库
             //将连接字符串写入配置文件中 string connStr = "sever=.;uid=sa;pwd=123456;database=demo";

这部分写在配置文件中

//<connectionStrings>
   // <add name="SqlConn" connectionString="server=.;uid=sa;pwd=123456;database=LoginBlock"/>
  //</connectionStrings>

//条添加引用引入configuration命名空间
             string connStr = ConfigurationManager.ConnectionStrings["SqlConn"].ConnectionString;
             using (SqlConnection conn = new SqlConnection(connStr))
             {
                 using (SqlCommand cmd = conn.CreateCommand())
                 {

conn.Open();
                     //select 查询语句str
                     string str = @"SELECT  [Uid]
                                               ,[Unm]
                                               ,[Pwd]
                                               ,[ErrorDate]
                                               ,[ErrorTimes]
                                           FROM [Login_Block]
                                           WHERE Unm='" + textBox1.Text.Trim()
                                           + "' and Pwd='" + textBox2.Text.Trim() + "' ";
                     cmd.CommandText = str;
                     // bool ishasdata=false;

//这里创建Login对象

Login login = null;
                     using (SqlDataReader reader = cmd.ExecuteReader())
                     {//判断是否有数据
                         #region MyRegion
                         //if (!reader.hasrows)
                         //{
                         //    //修改错误时间,错误次数

//}
                         #endregion
                         #region MyRegion
                         if (reader.HasRows)
                         {
                             reader.Read();
                         }
                         #endregion
                         if (reader.Read())
                         {
                             login = new Login();
                             login.Uid = int.Parse(reader["Uid"].ToString());
                             login.Pwd = reader["Pwd"].ToString();
                             login.ErrorTimes = int.Parse(reader["ErrorTimes"].ToString());
                             login.Errordata = DateTime.Parse(reader["Errordate"].ToString());
                         }
                         // ishasdata = reader.HasRows;

}//花括号执行结束之前reader对象一直占用conn对象
                     if (login == null/*!ishasdata*/)
                     {
                         //修改 错误时间,错误次数  where UserName=txtUserName.Text
                         cmd.CommandText =
                             "update Login_Block set Errordate=getdate(), ErrorTimes=ErrorTimes+1 where Unm='" +
                             textBox1.Text.Trim() + "'";
                         cmd.ExecuteNonQuery();
                         //MessageBox.Show("用户名密码Error");
                         return;
                     }
                     //执行有数据的过程
                     if (login.ErrorTimes < 3 || DateTime.Now.Subtract(login.Errordata).Minutes > 15)
                     {
                         MessageBox.Show("登录成功!!");
                         cmd.CommandText = "update Login_Block set ErrorTimes=0,Errordate=getdate() where Uid=" + login.Uid;
                         cmd.ExecuteNonQuery();
                     }
                     else
                     {
                         MessageBox.Show("登录失败!账号被锁定");
                     }
                 }
             }
         }
     }

}

Login类:

using System;

namespace 登录验证项目

{
     public class Login
     {
         //[Uid],[Pwd],[ErrorTimes],[Errordata]
         public int Uid { get; set; }
         public string Unm { get; set; }
         public string Pwd { get; set; }
         public int ErrorTimes { get; set; }
         public DateTime Errordata { get; set; }
     }

}

数据库:

表:Login_Block

字段:

[Uid]

[Unm]

[Pwd]

[ErrorDate]

[ErrorTimes]

WinForm登录验证的更多相关文章

  1. ASP.NET MVC 登录验证

     好久没写随笔了,这段时间没 什么事情,领导 一直没安排任务,索性 一直在研究代码,说实在的,这个登录都 搞得我云里雾里的,所以这次我可能也讲得不是 特别清楚,但是 我尽力把我知道的讲出来,顺便也对自 ...

  2. Shiro安全框架入门篇(登录验证实例详解与源码)

    转载自http://blog.csdn.net/u013142781 一.Shiro框架简单介绍 Apache Shiro是Java的一个安全框架,旨在简化身份验证和授权.Shiro在JavaSE和J ...

  3. 练习:python 操作Mysql 实现登录验证 用户权限管理

    python 操作Mysql 实现登录验证 用户权限管理

  4. AD域登录验证

    AD域登录验证 作者:Grey 原文地址:http://www.cnblogs.com/greyzeng/p/5799699.html 需求 系统在登录的时候,需要根据用户名和密码验证连接域服务器进行 ...

  5. ASP.NET MVC4 Forms 登录验证

    Web.config配置: 在<system.web>节下: <authentication mode="Forms"> <forms loginUr ...

  6. MVC前台页面做登录验证

    最近接触了一个电商平台的前台页面,需要做一个登录验证,具体情况是:当用户想要看自己的订单.积分等等信息,就需要用户登录之后才能查询,那么在MVC项目中我们应该怎么做这个前台的验证呢? 1.我在Cont ...

  7. [MVC学习笔记]5.使用Controller来代替Filter完成登录验证(Session校验)

          之前的学习中,在对Session校验完成登录验证时,通常使用Filter来处理,方法类似与前文的错误日志过滤,即新建Filter类继承ActionFilterAttribute类,重写On ...

  8. ThinkPHP之登录验证

    验证方面写的不是很完整,正在完善当中 <?php /** * Created by dreamcms. * User: Administrator * Date: 2016/9/5 * Time ...

  9. ASP.NET MVC3 实现用户登录验证

    自定义一个授权筛选器类,继承于AuthorizeAttribute: using System; using System.Web; using System.Web.Mvc; namespace M ...

随机推荐

  1. 纯css做幻灯片效果

    css3里面有一个@keyframes动画功能. w3c上面的例子: 可以使用它来做一个幻灯片效果. <!DOCTYPE html> <html lang="en" ...

  2. 从零学习Fluter(三):Flutter的路由跳转以及state的生命周期

    今天继续研究Flutter,我是在flutter1.0发布后,才玩flutter的,发现在此之前,许多人已经先发制人,玩起了flutter,不知不觉中,我已经被别人摔在了起跑线上,玩过flutter后 ...

  3. web前端自动化测试/爬虫利器puppeteer介绍

    web前端自动化测试/爬虫利器puppeteer介绍 Intro Chrome59(linux.macos). Chrome60(windows)之后,Chrome自带headless(无界面)模式很 ...

  4. Android PAI (PlayAutoInstall)预装APK 功能

    最近刚找到工作,是手机方案公司,刚接触手机系统预装的APP,以及解决方案MTK平台下预装APP的bug,也接触到了Launcher的东西. 然后接触到了第一个需求 PAI预装APK功能 下面是我用到的 ...

  5. 在Windows 10上利用seafile搭建个人云服务

    参考seafile官方文档 安装Python 2.7.11 32位版 下载地址:https://www.python.org/downloads/release/python-2711/ 选择 32位 ...

  6. Linux中Apache服务器的简单配置

    配置Apache服务器: 1.安装Apache,可以参考Linux 中yum的配置来安装: yum install http* -y 2.修改SELinux: setenforce 0 查看: 3.防 ...

  7. Jenkins系统监测(转)

    Jenkins系统监测   Jenkins 是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上.同时 Jenkins 能实施监控集成中存在 ...

  8. 5.6Python数据处理篇之Sympy系列(六)---矩阵的操作

    目录 目录 前言 (一)矩阵的创建-Matrix() 1.说明: 2.源代码: 3.输出: (二)常用的构造矩阵 1.说明: 2.源代码: 3.输出: (三)基本操作 1.说明: 2.源代码: 3.输 ...

  9. B

    baababblebabblerbabebabelbaboonbabybabyhoodBabylonBabylonianbacchanalbacchanalianbachelorbacillusbac ...

  10. Redis操作list

    来自:http://www.cnblogs.com/alex3714/articles/6217453.html List操作,redis中的List在在内存中按照一个name对应一个List来存储. ...