用户登录(登陆失败3次,2分钟后再登陆)
2012-02-20 21:02
267 查看
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Configuration;
using System.Data.SqlClient;
namespace 作业_用户登录
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private int maxerrortimes = 3;
private int intervalMinute = 2;
private void button1_Click(object sender, EventArgs e)
{
string strcon = ConfigurationManager.ConnectionStrings["strcon"].ConnectionString;
SqlConnection conn = new SqlConnection(strcon);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "select COUNT(username) from T_User where username=@username";
cmd.Parameters.Add(new SqlParameter("@username", this.txtusername.Text));
//cmd.Parameters.Add(new SqlParameter("@password", this.txtpassword.Text));
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable table = new DataTable();
adapter.Fill(table);
if (table.Rows.Count > 0)
{
cmd.Connection = conn;
cmd.CommandText = "SELECT Error,ErrorTime FROM T_User WHERE username='" + this.txtusername.Text + "'";
SqlDataAdapter ad = new SqlDataAdapter(cmd);
DataTable tb = new DataTable();
adapter.Fill(tb);
int errTimes = Convert.ToInt32(tb.Rows[0]["Error"]); //登陆失败的次数
if (errTimes == maxerrortimes) //已经达到允许登陆失败的最大次数
{
DateTime dtLast = Convert.ToDateTime(tb.Rows[0]["ErrorTime"]); //达到最大登陆次数的时间
TimeSpan ts1 = new TimeSpan(dtLast.Ticks);
TimeSpan ts2 = new TimeSpan(DateTime.Now.Ticks); //当前时间
TimeSpan ts = ts2.Subtract(ts1).Duration();
if (ts.Minutes < this.intervalMinute) //登陆间隔时间小于规定的时间
{
MessageBox.Show("请" + this.intervalMinute + "分钟后再登陆!");
}
else //达到间隔时间后,清0的登陆失败次数,视其为第一次登陆
{
cmd.Connection = conn;
cmd.CommandText = "update T_User set errortime=getdate(),error=0 where username='" + this.txtusername.Text + "'";
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
LoginLess(0);
}
}
else //登陆还未失败或失败次数小于最大次数
{
LoginLess(errTimes);
}
}
else
{
MessageBox.Show("用户不存在");
}
}
private void LoginLess(int tempErrorTimes)
{
string strcon = ConfigurationManager.ConnectionStrings["strcon"].ConnectionString;
SqlConnection conn = new SqlConnection(strcon);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "select * from T_User where username=@username and password=@password";
cmd.Parameters.Add(new SqlParameter("@username", this.txtusername.Text));
cmd.Parameters.Add(new SqlParameter("@password", this.txtpassword.Text));
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable table = new DataTable();
adapter.Fill(table);
if (table.Rows.Count <= 0)
{
if (tempErrorTimes == this.maxerrortimes - 1) //已经登陆失败最大次数
{
cmd.Connection = conn;
cmd.CommandText = "update T_User set errortime=getdate(),error=3 where username='" + this.txtusername.Text + "'";
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
MessageBox.Show("您已经连续登陆失败" + maxerrortimes.ToString() + "次,请" + this.intervalMinute + "分钟后再登陆!");
}
else //其它登陆失败次数
{
cmd.Connection = conn;
cmd.CommandText = "UPDATE T_User SET errortime = GETDATE(), Error = Error+1" + " WHERE username='" + this.txtusername.Text + "'";
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
MessageBox.Show("您已经连续登陆失败" + Convert.ToString(tempErrorTimes + 1) + "次,你还有" + Convert.ToString(this.maxerrortimes - tempErrorTimes - 1) + "次登陆机会");
}
}
else //登陆成功,将登陆错误次数清0
{
cmd.Connection = conn;
cmd.CommandText = "UPDATE T_User SET Error =0" + " WHERE username='" + this.txtusername.Text + "'";
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
MessageBox.Show("登陆成功!");
}
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Configuration;
using System.Data.SqlClient;
namespace 作业_用户登录
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private int maxerrortimes = 3;
private int intervalMinute = 2;
private void button1_Click(object sender, EventArgs e)
{
string strcon = ConfigurationManager.ConnectionStrings["strcon"].ConnectionString;
SqlConnection conn = new SqlConnection(strcon);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "select COUNT(username) from T_User where username=@username";
cmd.Parameters.Add(new SqlParameter("@username", this.txtusername.Text));
//cmd.Parameters.Add(new SqlParameter("@password", this.txtpassword.Text));
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable table = new DataTable();
adapter.Fill(table);
if (table.Rows.Count > 0)
{
cmd.Connection = conn;
cmd.CommandText = "SELECT Error,ErrorTime FROM T_User WHERE username='" + this.txtusername.Text + "'";
SqlDataAdapter ad = new SqlDataAdapter(cmd);
DataTable tb = new DataTable();
adapter.Fill(tb);
int errTimes = Convert.ToInt32(tb.Rows[0]["Error"]); //登陆失败的次数
if (errTimes == maxerrortimes) //已经达到允许登陆失败的最大次数
{
DateTime dtLast = Convert.ToDateTime(tb.Rows[0]["ErrorTime"]); //达到最大登陆次数的时间
TimeSpan ts1 = new TimeSpan(dtLast.Ticks);
TimeSpan ts2 = new TimeSpan(DateTime.Now.Ticks); //当前时间
TimeSpan ts = ts2.Subtract(ts1).Duration();
if (ts.Minutes < this.intervalMinute) //登陆间隔时间小于规定的时间
{
MessageBox.Show("请" + this.intervalMinute + "分钟后再登陆!");
}
else //达到间隔时间后,清0的登陆失败次数,视其为第一次登陆
{
cmd.Connection = conn;
cmd.CommandText = "update T_User set errortime=getdate(),error=0 where username='" + this.txtusername.Text + "'";
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
LoginLess(0);
}
}
else //登陆还未失败或失败次数小于最大次数
{
LoginLess(errTimes);
}
}
else
{
MessageBox.Show("用户不存在");
}
}
private void LoginLess(int tempErrorTimes)
{
string strcon = ConfigurationManager.ConnectionStrings["strcon"].ConnectionString;
SqlConnection conn = new SqlConnection(strcon);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "select * from T_User where username=@username and password=@password";
cmd.Parameters.Add(new SqlParameter("@username", this.txtusername.Text));
cmd.Parameters.Add(new SqlParameter("@password", this.txtpassword.Text));
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable table = new DataTable();
adapter.Fill(table);
if (table.Rows.Count <= 0)
{
if (tempErrorTimes == this.maxerrortimes - 1) //已经登陆失败最大次数
{
cmd.Connection = conn;
cmd.CommandText = "update T_User set errortime=getdate(),error=3 where username='" + this.txtusername.Text + "'";
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
MessageBox.Show("您已经连续登陆失败" + maxerrortimes.ToString() + "次,请" + this.intervalMinute + "分钟后再登陆!");
}
else //其它登陆失败次数
{
cmd.Connection = conn;
cmd.CommandText = "UPDATE T_User SET errortime = GETDATE(), Error = Error+1" + " WHERE username='" + this.txtusername.Text + "'";
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
MessageBox.Show("您已经连续登陆失败" + Convert.ToString(tempErrorTimes + 1) + "次,你还有" + Convert.ToString(this.maxerrortimes - tempErrorTimes - 1) + "次登陆机会");
}
}
else //登陆成功,将登陆错误次数清0
{
cmd.Connection = conn;
cmd.CommandText = "UPDATE T_User SET Error =0" + " WHERE username='" + this.txtusername.Text + "'";
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
MessageBox.Show("登陆成功!");
}
}
}
}
相关文章推荐
- Centos7下用户登录失败N次后锁定用户禁止登陆的方法
- login---用户登陆,密码失败3次,账户将被锁住
- login--用户登陆,密码失败3次,账户将被锁住
- Centos 用户登录失败N次后锁定用户禁止登陆
- Centos7 用户登录失败N次后锁定用户禁止登陆
- 2013国家公务员报名 网站 该设备已有用户登录,请重启该设备! 登陆失败
- SQL2005的sa用户登录问题 用户名无法登录sql2005"已成功与服务器建立连接,但是在登录过程中发生错误" 用户"sa"登陆失败,SQL Server错误:18456
- Oracle中对用户登陆失败进行审计,查出相关登录信息(机器名)
- Centos7 用户登录失败N次后锁定用户禁止登陆
- 在安装discuz!nt时,数据库用户登录失败的问题时,sql server 2008 数据库更改登录模式(sql server 2008 混合登陆中SqlServer身份验证用户名密码)
- sql登陆故障----sql 2005 用户 sa 登录失败,该用户与可信SQL Server连接无关联 错误18452
- 为什么登陆不上WIN 7系统的电脑?提示无权限,登陆失败,未授权用户在计算机上请求登录
- Centos7 用户登录失败N次后锁定用户禁止登陆
- hibernate 用户 'xxxx' 登录失败。该用户与可信的SQL SERVER 连接无关联
- SQL2008无法连接到.\SQLEXPRESS,用户'sa'登录失败(错误18456)图文解决方法
- 用户 'NT AUTHORITY\NETWORK SERVICE' 登录失败
- 未登录用户自动跳回登陆界面——拦截器interceptor
- “用户sa登录失败,该用户与可信sql server连接无关联”错误解决方法
- "sa登录失败-提示该用户与可信 SQL Server 连接无关联"问题
- 访问win7上面的共享文件时,出现登陆失败:禁用当前用户的错误