Python实现用户登录并且输入错误三次后锁定该用户
作者:何春晖ERP程序员 时间:2022-07-28 12:02:47
实现用户登录并且输入错误三次后锁定该用户
我的测试环境,win7,python3.5.1
提示输入用户名,和密码
判断是否被锁定
判断用户名和密码是否匹配
输入错误三次,账号被锁定
思路
代码块
name = 'alex' #正确的用户名
passwd = '123456' #正确的密码
lock_usr = [] #锁定账号列表
for i in range(0,3):
usr_name = input("用户名:")
usr_passwd = input("密码:")
if usr_name == name and usr_passwd == passwd:
print("玩命加载中...")
break
elif name != usr_name or passwd != usr_passwd:
if i < 2:
print("用户名密码错误,请重新输入!")
else:
lock_usr.append(usr_name) #将输入错误三次的的账号添加到锁定列表中
print("对不起!机会只有三次,您的账号密码被锁定")
elif usr_name in lock_usr:
print("该账号已锁定,请解锁后登陆")
PS:下面在通过c#实现密码输入三次错误后锁定用户功能
#region 密码输入三次错误后锁定用户功能
#region 增加错误次数的方法
///<summary>
///增加错误次数的方法
///</summary>
private void IncErrorTime()
{
string ConnStr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
using (SqlConnection conn = new SqlConnection(ConnStr))
{
using (SqlCommand updateCmd = conn.CreateCommand())
{
updateCmd.CommandText = "update T_Admin set errortime=errortime+1 whereUsername=@username";
updateCmd.Parameters.Add(new SqlParameter("username", cmbuserName.Text));
conn.Open();
updateCmd.ExecuteNonQuery();
}
}
}
#endregion
#region 错误次数清0
///<summary>
///错误次数清0
///</summary>
private void NotErrorTime()
{
string ConnStr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
using (SqlConnection conn = new SqlConnection(ConnStr))
{
using (SqlCommand updateCmd = conn.CreateCommand())
{
updateCmd.CommandText = "update T_Admin set errortime=0 whereUsername=@username";
updateCmd.Parameters.Add(new SqlParameter("username", cmbuserName.Text));
conn.Open();
updateCmd.ExecuteNonQuery();
}
}
}
#endregion
#region 密码错误3次,记录当前时间加30分钟
///<summary>
///密码错误3次,记录当前时间加30分钟
///</summary>
private void IncLoginTime()
{
string ConnStr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
using (SqlConnection conn = new SqlConnection(ConnStr))
{
using (SqlCommand updateCmd = conn.CreateCommand())
{
updateCmd.CommandText = "update T_Admin set logintime=@logintime whereUsername=@username";
DateTime logintime = DateTime.Now.AddMinutes(30);
updateCmd.Parameters.Add(new SqlParameter("username", cmbuserName.Text));
updateCmd.Parameters.Add(new SqlParameter("logintime", logintime.ToString()));
conn.Open();
updateCmd.ExecuteNonQuery();
}
}
}
#endregion
#region 按钮事件判断用户登录3次失效后锁定用户30分钟
private void BtnClike()
{
string username = cmbuserName.Text;
string password = txtPwd.Text;
string ConnStr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
using (SqlConnection conn = new SqlConnection(ConnStr))
{
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select * from T_Admin whereusername=@username";
cmd.Parameters.Add(new SqlParameter("username", username));
conn.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
{
if (reader.Read())
{
//用户存在
string dbpassword = reader.GetString(reader.GetOrdinal("password"));
DateTime logintime = reader.GetDateTime(reader.GetOrdinal("logintime"));
//判断当前时间是是服务器允许登录时间
if (logintime > DateTime.Now)
{
MessageBox.Show("一定时间内禁止登录");
return;
}
//如果密码正确
if (dbpassword == txtPwd.Text)
{
NotErrorTime();
MessageBox.Show("登录成功!");
}
//如果密码错误
else
{
int errortime = reader.GetInt32(reader.GetOrdinal("errortime"));
if (errortime >= 2)
{
MessageBox.Show("密码错误次数太多!");
IncLoginTime();
NotErrorTime();
return;
}
MessageBox.Show("密码错误!");
IncErrorTime();//密码错误,次数加1
}
}
else//用户名不存在
{
MessageBox.Show("用户名不存在!");
return;
}
}
}
}
}
#endregion
#endregion
总结
以上所述是小编给大家介绍的Python实现用户登录并且输入错误三次后锁定该用户网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
来源:https://blog.csdn.net/hch271510994/article/details/62044714
标签:密码,错误,锁定
0
投稿
猜你喜欢
Python 正则表达式匹配字符串中的http链接方法
2022-02-11 03:02:13
基于PyQT5制作一个课堂点名系统
2023-10-08 20:52:13
ASP分页显示Recordset数据
2008-11-07 15:43:00
sqlserver isnull在数据库查询中的应用
2011-12-01 10:30:25
asp如何对多个条件进行判断?
2009-11-20 18:28:00
influx+grafana自定义python采集数据和一些坑的总结
2022-08-23 14:55:54
web程序员的思考
2009-08-04 13:10:00
python OpenCV学习笔记直方图反向投影的实现
2021-01-12 09:16:44
在Python中移动目录结构的方法
2022-08-04 20:48:47
python中实现数组和列表读取一列的方法
2021-04-07 08:04:48
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
2022-12-19 11:56:28
python文件操作相关知识点总结整理
2023-05-09 02:17:42
Div+CSS布局入门教程
2007-09-13 12:52:00
linux服务器下PHPCMS v9 安全配置详解
2023-11-17 11:51:52
使用numpngw和matplotlib生成png动画的示例代码
2023-06-15 13:38:21
python实现基于两张图片生成圆角图标效果的方法
2023-04-20 17:58:56
Python高级用法总结
2021-04-20 13:03:01
谈中国站长站的文章干扰码实现方法
2007-10-13 11:13:00
python编程学习使用管道Pipe编写优化代码
2023-08-20 04:08:45
SQL 统计一个数据库中所有表记录的数量
2012-01-29 18:21:36