登陆三次错误提示15分钟后再试
来源:互联网 发布:002174游族网络 编辑:程序博客网 时间:2024/05/29 19:00
现在很多网站都设有同一个用户名登陆多次后就会限制再次登陆。以下是一种实现方法,需要结合数据库来实现。
1.表设计
Id是一个逻辑主键,UserName用户名,PassWord 密码,LastTime记录登陆上一次登陆失败时间,ErrorTimes记录登陆登陆失败次数
以下是实现代码:
wpf的xmal Grid:
<TextBlock Height="26" HorizontalAlignment="Left" Margin="64,39,0,0" Name="textBlock1" Text="用户名" VerticalAlignment="Top" Width="123" />
<TextBlock Height="26" HorizontalAlignment="Left" Margin="64,123,0,0" Name="textBlock2" Text="密码" VerticalAlignment="Top" Width="123" />
<TextBox Height="27" HorizontalAlignment="Left" Margin="64,71,0,0" Name="txtusername" VerticalAlignment="Top" Width="123" />
<Button Content="登陆" Height="27" HorizontalAlignment="Left" Margin="64,231,0,0" Name="btnlogin" VerticalAlignment="Top" Width="123" Click="btnlogin_Click" />
<PasswordBox Height="24" HorizontalAlignment="Left" Margin="64,176,0,0" Name="password" VerticalAlignment="Top" Width="123" />
后台的实现:
private void btnlogin_Click(object sender, RoutedEventArgs e)
{
//LoginCheck();
#region 查询登陆名和登陆次数
using (SqlConnection conn = new SqlConnection(
"Data Source=127.0.0.1;Initial Catalog=MyTest;User Id=sa;Password=solora020"))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "Select * from T_User where UserName=@name ";
cmd.Parameters.Add(new SqlParameter("@name", txtusername.Text.Trim()));
//获取查询次数
// SqlDataReader reader
using (SqlDataReader reader = cmd.ExecuteReader())
{
reader.Read();
int errorloginTime = reader.GetInt32(4);
if (3 > errorloginTime)
{
LoginCheck();
}
else if (3 == errorloginTime)
{
//记录当前时间
//DateTime now = DateTime.Now;
reader.Close();
cmd.CommandText = "Update T_User set LastTime=@time where UserName=@name";
cmd.Parameters.Add(new SqlParameter("@time", DateTime.Now));
cmd.ExecuteNonQuery();
LoginCheck();
}
else if (3 < errorloginTime)
{
reader.Close();
//获取上次登陆时间
cmd.CommandText = "select LastTime from T_User where UserName=@name";
DateTime lastTime = (DateTime)cmd.ExecuteScalar();
//比较时间
DateTime now = DateTime.Now;
System.TimeSpan ts = now - lastTime;
//获取分钟
int minute = ts.Minutes;
if (15 < minute)
{
LoginCheck();
}
else
{
MessageBox.Show("登陆同一用户已错误3次,请稍后再试");
}
//MessageBox.Show(lastTime.ToString());
}
}
}
}
#endregion
}
private void LoginCheck()
{
#region 登陆成功Errortime置0,失败ErrorTime+1
using (SqlConnection conn = new SqlConnection(
"Data Source=127.0.0.1;Initial Catalog=MyTest;User Id=sa;Password=solora020"))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "Select * from T_User where UserName=@name and PassWord=@psd";
cmd.Parameters.Add(new SqlParameter("@name", txtusername.Text.Trim()));
cmd.Parameters.Add(new SqlParameter("@psd", password.Password));
SqlDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
MessageBox.Show("登陆成功");
//errorTime置0
reader.Close();
cmd.CommandText = "update T_User set ErrorTimes=0 where UserName=@name";
//cmd.Parameters.Add(new SqlParameter("@name", txtusername.Text.Trim()));
cmd.ExecuteNonQuery();
}
else
{
reader.Close();
MessageBox.Show("登陆失败");
cmd.CommandText = "update T_User set ErrorTimes=ErrorTimes+1 where UserName=@name";
//cmd.Parameters.Add(new SqlParameter("@name", txtusername.Text.Trim()));
cmd.ExecuteNonQuery();
}
}
}
#endregion
}
- 登陆三次错误提示15分钟后再试
- 登陆功能:登陆失败三次就限制10分钟后才能登陆
- 11-27:输错三次禁止登陆,15分钟后才能继续。用数据库记录ErrorTimes,最后出错时间lastErrorDateTime
- 输错三次禁止登陆,15分钟后才能继续。用数据库记录ErrorTimes,最后出错时间lastErrorDateTime。
- 输错三次禁止登陆,15分钟后才能继续。用数据库记录ErrorTimes,最后出错时间lastErrorDateTime。
- C#中如何在登录案例中设置用户输错三次密码禁止登陆,15分钟后才能继续。
- discuz密码错误次数过多,请 15 分钟后重新登陆
- Discuz!:密码错误次数过多,请15分钟后重新登陆的修改方法
- phpcmsv9更换域名后和空间后登陆后台提示验证码错误如何解决
- 登陆出错后JSP提示
- 判断输入的用户名和密码是否是lanoukeji以及123456。如果是,弹出alertview提示用户“欢迎回来”,如果不是,提示“用户名或者密码错误,请核对后再试”,并给出两个按钮,确定和取消。
- Android调用支付宝快捷支付时提示"系统繁忙,请稍后再试(ALI64)"错误
- Android调用支付宝快捷支付时提示"系统繁忙,请稍后再试(ALI64)"错误
- Android调用支付宝快捷支付时提示"系统繁忙,请稍后再试(ALI64)"错误
- 通达OA-今日学习:登陆后的界面出现英文错误提示,包含mysql等字符
- discuz密码错误15分钟后重新登录
- 用户登陆完整版———密码错误三次受限
- 简单的密码输入三次错误模拟登陆
- wubi初学者好用的工具
- Hadoop集群部署配置文档(第2部分)
- 卡特兰数
- POJ 3624 Charm Bracelet(01背包问题)
- 掌握六大技能即可搞定英语
- 登陆三次错误提示15分钟后再试
- UITextField 的属性
- CentOS 6.4 图文安装教程
- 深入浅出MFC学习笔记:MFC六大关键技术仿真之永续生存
- TopCoder 250 points 17-SRM 152 DIV 1 106.51/250 42.60%
- SZ斐波那契数列
- 设计模式六大设计原则之迪米特法则(Law Of Demeter)
- 使用cygwin在windows下安装nodeJS
- 设计模式六大设计原则之开闭原则(Open Close Principle)