您的位置:首页 > 其它

用户登录(登陆失败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("登陆成功!");

}

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐