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


猜你喜欢
- 将Vue0.1里的过滤代码添加到Vue2.0,方法很简单,具体内容如下var filters = {orderBy: orderBy, fi
- python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,
- Web_THBC 为表示层也就是页面(.aspx) BLL_THBC 为业务逻辑层 DAL_THBC 为数据库交互层 (向数据库执行SQL语
- MySQL数据库恢复到指定时间点时,我们必须通过MySQL全备+MySQL增量备份(可选)+MySQL的二进制日志(binlog)进行重放来
- 将电话簿TeleAddressBook.txt和电子邮件EmailAddressBook.txt合并为一个完整的AddressBook.tx
- 从2004年开始,我开始进入雅虎的异常表现小组。我们是一个很小的队伍,专门针对雅虎的产品进行质量检测和改进,我作为一个后端工程师,现在却开始
- 一直以来都对DOMDocument与 XMLHTTP 两者的区别不甚了解,今天用 eXeScope 查看了msxml6.dll 内
- 本文实例讲述了Python实现html转换为pdf报告(生成pdf报告)功能。分享给大家供大家参考,具体如下:1、先说下html转换为pdf
- 返回被去除指定字符的字符串默认去除空白字符删除首尾字符:str.strip([char]) 删除首字符:str.lstrip([char])
- MQTT是一种轻量级的消息传输协议,它广泛用于物联网设备之间的通信,例如传感器,智能家居等等。MQTT在Web应用程序中的一个常见用例是,用
- 本文主要研究的是Django中migrate和makemigrations的差别,具体如下。在你改动了 model.py的内容之后执行下面的
- 最近我遇到了一个 bug,我试着通过 Rails 在以“utf8”编码的 MariaDB 中保存一个 UTF-8 字符串,然后出现了一个离奇
- Python 文件操作的详解及实例一、文件操作1、对文件操作流程打开文件,得到文件句柄并赋值给一个变量通过句柄对文件进行操作关闭文件现有文件
- Unsafe code是一种绕过go类型安全和内存安全检查的Go代码。大多数情况,unsafe code是和指针相关的。但是要记住使用uns
- 一、传入的参数类型要求不同:1、 file.write(str)需要传入一个字符串做为参数,否则会报错。write( "字符串&q
- 1、场景描述通常来说,前端要拿到excel数据,都是先上传存储数据库,然后再请求后端接口,获取数据。但有100个产品经理,就会有101个不同
- 本文实例讲述了thinkphp3.x自定义Action、Model及View的实现方法。分享给大家供大家参考,具体如下:1、在xmall/L
- 读取一个已经保存了的字典f = open('dict_th','r')a = f.read()dict_hi
- 方法1: 代码如下:truncate table TableName 删除表中的所有的数据的同时,将自动增长清零。 如果有外键参考这个表,这
- 客户需要一个类似 news letter 的功能,当然,内容是可编辑的,而且还要以 HTML 格式呈现给用户。这就需要在发送邮件的时候,指明