登录时错误3次则锁定,并15分钟内不能登录
注册时用正则表达式规范
---首先添加SQL类型,写应用程序配置文件,并分别引用
--主窗口
代码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.Data.SqlClient; using System.Configuration; namespace 用户登录 { public partial class MainForm : Form { public static string strLogName = string.Empty; public MainForm() { InitializeComponent(); } private void btnlogin_Click(object sender, EventArgs e) { Form1 f1 = new Form1(); this.Hide(); f1.Show(); } private void btnenter_Click(object sender, EventArgs e) { //判断文本框不为空 if (txtid.Text == "" || txtpwd.Text == "") { MessageBox.Show("用户名或者密码不能为空"); return; } string myname = txtid.Text.Trim(); string sqlstr = "select count(userName) from T_userinformation where userName=@name"; int res = Convert.ToInt32(SQLHelper.Class1.ExcuteScalar(sqlstr, myname)); //查询用户名是否存在 if (res > 0) { Found: string str2 = "select time from T_userinformation where username=@name"; bool res2 =Convert.IsDBNull(SQLHelper.Class1.ExcuteScalar(str2, myname)); //查询数据库设定的time是否为空 if (res2) { string str = "select userPWD from T_userinformation where username=@name"; string pwd = Convert.ToString(SQLHelper.Class1.ExcuteScalar(str, myname)); //查询输入的密码是否正确 if (pwd == txtpwd.Text.Trim()) { MessageBox.Show("登录成功"); strLogName = txtid.Text.Trim(); messageform mform = new messageform(); this.Hide(); mform.Show(); } else { string str1 = "select seed from T_userinformation where username=@name"; int myseed = Convert.ToInt32(SQLHelper.Class1.ExcuteScalar(str1, myname)); //设定种子,小于3则给与提示,并自增1 if (myseed < 3) { myseed++; string str4 = "update T_userinformation set seed='" + myseed + "' where username=@name"; SQLHelper.Class1.ExcuteNonQurey(str4, myname); MessageBox.Show(string.Format("密码错误,你还有{0}次登录机会", 4 - myseed)); } //大于3则锁定账户,往数据库插入当前时间 else { btnenter.Enabled = false; string str3 = "update T_userinformation set time=GETDATE() where username=@name"; SQLHelper.Class1.ExcuteNonQurey(str3, myname); MessageBox.Show("你的用户名已被锁定,15分钟后可以登录"); } } } else { //用当前时间减去数据库里的时间,大于15分钟则设数据库里的时间为NULL并返回,小于15分钟 //则给予提示 string str4 = "select time from T_userinformation where username=@name"; DateTime savetime =Convert.ToDateTime(SQLHelper.Class1.ExcuteScalar(str4, myname)); string str1 = @"select datediff(SECOND,'"+savetime+"',getdate())"; int time =Convert.ToInt32(SQLHelper.Class1.ExcuteScalar(str1,null)); if (time < 900) { MessageBox.Show(string.Format("还有{0}分钟可以登录", time / 60 + 1)); } else { string str5 = "update T_userinformation set seed=1,time=null where username=@name"; SQLHelper.Class1.ExcuteNonQurey(str5, myname); goto Found; } } } else { MessageBox.Show("用户名不存在"); } } private void btnalter_Click(object sender, EventArgs e) { alterpwd ap = new alterpwd(); this.Hide(); ap.Show(); } }
--修改密码窗口
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
代码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.Text.RegularExpressions; namespace 用户登录 { public partial class alterpwd : Form { public alterpwd() { InitializeComponent(); } bool b1, b2, b3; private void textBox1_Leave(object sender, EventArgs e) { b1 = false; if (string.IsNullOrEmpty(txtuid.Text.Trim())) { return; } string sqlstr1 = "select count(userName) from T_userinformation where userName=@name"; int res = Convert.ToInt32(SQLHelper.Class1.ExcuteScalar(sqlstr1, txtuid.Text.Trim())); if (res > 0) { lbuid.ForeColor = Color.Green; lbuid.Text = "用户名正确"; b1 = true; } else { lbuid.ForeColor = Color.Red; lbuid.Text = "用户名不存在"; } } private void txtnewpwd_Leave(object sender, EventArgs e) { if (string.IsNullOrEmpty(txtnewpwd.Text.Trim())) { return; } b2 = Regex.IsMatch(txtnewpwd.Text.Trim(), @"^\d{6}$"); if (b2) { lbpwd.ForeColor = Color.Green; lbpwd.Text = "恭喜,密码输入正确!"; } else { lbpwd.ForeColor = Color.Red; lbpwd.Text = "输入错误,请检查密码长度和格式"; } } private void txtnewpwd2_Leave(object sender, EventArgs e) { if (string.IsNullOrEmpty(txtnewpwd2.Text.Trim())) { return; } b3 = txtnewpwd2.Text.Trim() == txtnewpwd.Text.Trim(); if (b3) { lbpwd2.ForeColor = Color.Green; lbpwd2.Text = "恭喜,密码验证正确!"; } else { lbpwd2.ForeColor = Color.Red; lbpwd2.Text = "密码不一致"; } } private void btnok_Click(object sender, EventArgs e) { string str = "select userPWD from T_userinformation where username=@name"; string pwd = Convert.ToString(SQLHelper.Class1.ExcuteScalar(str, txtuid.Text.Trim())); if (b1 && b2 && b3) { if (pwd == txtoldpwd.Text.Trim()) { string str2 = "update T_userinformation set userPWD=@pwd where username=@name"; SQLHelper.Class1.ExcuteNonQurey(str2, txtnewpwd2.Text.Trim(), txtuid.Text.Trim()); MessageBox.Show("修改成功"); } else { MessageBox.Show("原始密码错误"); } } else { MessageBox.Show("请填写正确的信息"); } } private void button1_Click(object sender, EventArgs e) { MainForm mf = new MainForm(); this.Hide(); mf.Show(); } } }
--注册窗口
代码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.Text.RegularExpressions; using System.Data.SqlClient; namespace 用户登录 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } bool b1, b2, b3, b4, b5, b6; private void button1_Click(object sender, EventArgs e) { try { if (b1 && b2 && b3 && b4 && b5 && b6) { string str = @"insert into T_userinformation (userName, userPWD, userPhone, userEmial, userBirthday) values (@t1,@t2,@t3,@t4,@t5)"; SQLHelper.Class1.ExcuteNonQurey(str,txtuid.Text,txtpwd.Text,txtphone.Text,txtmail.Text,Convert.ToDateTime(txtbirth.Text)); MessageBox.Show("注册成功"); MainForm mf = new MainForm(); this.Hide(); mf.Show(); } else { MessageBox.Show("请完善信息"); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void textBox1_Leave(object sender, EventArgs e) { if (string.IsNullOrEmpty(txtuid.Text.Trim())) { return; } b1 = Regex.IsMatch(txtuid.Text.Trim(), @"^\w{0,20}$"); string str = "select count(userName) from T_userinformation where userName=@n"; int res = Convert.ToInt32(SQLHelper.Class1.ExcuteScalar(str, txtuid.Text.Trim())); if (b1) { if (res == 0) { labelUid.ForeColor = Color.Green; labelUid.Text = "恭喜,用户名可以使用!"; } else { labelUid.ForeColor = Color.Red; labelUid.Text = "用户名已存在"; } } else { labelUid.ForeColor = Color.Red; labelUid.Text = "用户名长度超过20"; } } private void textBox3_Leave(object sender, EventArgs e) { if (string.IsNullOrEmpty(txtpwd.Text.Trim())) { return; } b2 = Regex.IsMatch(txtpwd.Text.Trim(), @"^\d{6}$"); if (b2) { labelpas.ForeColor = Color.Green; labelpas.Text = "恭喜,密码输入正确!"; } else { labelpas.ForeColor = Color.Red; labelpas.Text = "输入错误,请检查密码长度和格式"; } } private void textBox2_Leave(object sender, EventArgs e) { if (string.IsNullOrEmpty(txtpwd2.Text.Trim())) { return; } b3 = txtpwd2.Text.Trim() == txtpwd.Text.Trim(); if (b3) { labelpas2.ForeColor = Color.Green; labelpas2.Text = "恭喜,密码验证正确!"; } else { labelpas2.ForeColor = Color.Red; labelpas2.Text = "输入错误,请检查密码"; } } private void textBox4_Leave(object sender, EventArgs e) { if (string.IsNullOrEmpty(txtmail.Text.Trim())) { return; } b4 = Regex.IsMatch(txtmail.Text.Trim(), @"^[0-9a-zA-Z\.-_]+@[0-9a-zA-Z\-_]+(\.[0-9a-zA-Z\-_]+)+$"); if (b4) { labelmail.ForeColor = Color.Green; labelmail.Text = "恭喜,邮箱输入正确!"; } else { labelmail.ForeColor = Color.Red; labelmail.Text = "输入错误,请检查邮箱格式"; } } private void textBox5_Leave(object sender, EventArgs e) { if (string.IsNullOrEmpty(txtphone.Text.Trim())) { return; } b5 = Regex.IsMatch(txtphone.Text.Trim(), @"^\d{11}$"); if (b5) { labelphone.ForeColor = Color.Green; labelphone.Text = "恭喜,手机输入正确"; } else { labelphone.ForeColor = Color.Red; labelphone.Text = "输入错误,请检查手机格式"; } } private void textBox6_Leave(object sender, EventArgs e) { if (string.IsNullOrEmpty(txtbirth.Text.Trim())) { return; } b6 = Regex.IsMatch(txtbirth.Text.Trim(), @"^\d{4}\-((0[1-9])|(1[0-2]))-((0[1-9])|(1[0-9])|(2[0-9])|(3[0-1]))$"); if (b6) { labelbirth.ForeColor = Color.Green; labelbirth.Text = "恭喜,出生日期输入正确"; } else { labelbirth.ForeColor = Color.Red; labelbirth.Text = "输入错误,请检查出生日期格式"; } } private void Form1_Load(object sender, EventArgs e) { } private void btnreturn_Click(object sender, EventArgs e) { MainForm mf = new MainForm(); this.Hide(); mf.Show(); } } }
--信息显示窗口
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
代码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.Data.SqlClient; namespace 用户登录 { public partial class messageform : Form { public messageform() { InitializeComponent(); } private void messageform_Load(object sender, EventArgs e) { string uid = MainForm.strLogName; string str = "select * from T_userinformation where username=@name"; SqlDataReader reader = SQLHelper.Class1.ExcuteReader(str, uid); if (reader.HasRows) { while (reader.Read()) { label5.Text = reader["userName"].ToString(); label6.Text = reader["userPhone"].ToString(); label7.Text = reader["userEmial"].ToString(); label8.Text = reader["userBirthday"].ToString(); } } } } }