python 登录注册(第二版)

第二版主要是连通了数据库。

但是感觉写的很冗余,还是得改改。

#user表:

create table users(
user_id int not null  auto_increment COMMENT '用户id',
user_name varchar(100) not null COMMENT '用户名',
user_password varchar(100) not null  COMMENT '用户密码',
is_black varchar(1) default null COMMENT '是否被拉黑 (0=否 1=是)',
createtime datetime default CURRENT_TIMESTAMP COMMENT '注册时间',
 PRIMARY KEY (user_id)
);
 

import pymysql


# 查询用户是否已存在
def user_exist(input_name):
    # 连接数据库
    db = pymysql.connect(host="localhost", user="root", password="xxx", database="yu_daydayup")
    # 获取游标对象
    cursor = db.cursor()
    # 执行sql
    select_sql = "select user_name,user_password from users where user_name=%s"
    cursor.execute(select_sql, (str(input_name),))
    # 查询出数据,则data有值
    data = cursor.fetchall()
    cursor.close()
    db.close()
    # data返回元组((user_name,user_password),)
    return data


# 数据库写入用户
def adduser(input_name, pwd):
    # 连接数据库
    db = pymysql.connect(host="localhost", user="root", password="xxx", database="yu_daydayup")
    # 获取游标对象
    cursor = db.cursor()
    # 执行sql =>  is_black=0表示不在黑名单,=1表示在黑名单
    insert_sql = "insert into users(user_name,user_password,is_black) values(%s,%s,'0')"
    cursor.execute(insert_sql, (input_name, pwd))
    # 提交数据,关闭游标,关闭数据库
    db.commit()
    cursor.close()
    db.close()


# 数据库查询黑名单
def black_exist(input_name):
    # 连接数据库
    db = pymysql.connect(host="localhost", user="root", password="xxx", database="yu_daydayup")
    # 获取游标对象
    cursor = db.cursor()
    # 执行sql
    select_sql = "select user_name from users where user_name=%s and is_black='1'"
    cursor.execute(select_sql, (str(input_name),))
    data = cursor.fetchall()
    cursor.close()
    db.close()
    return data


# 写入黑名单
def add_is_black(input_name):
    # 连接数据库
    db = pymysql.connect(host="localhost", user="root", password="xxx", database="yu_daydayup")
    # 获取游标对象
    cursor = db.cursor()
    # 执行sql
    update_sql = "update users set is_black='1' where user_name=%s"
    cursor.execute(update_sql, (str(input_name),))
    # 提交数据,关闭游标,关闭数据库
    cursor.close()
    db.commit()
    db.close()


# 注册
def register():
    # 定义一个变量,控制外循环
    site = True
    while site:
        # 用户输入用户名
        input_name = input("请输入用户名:")
        # data=user_exist(input_name) 返回数据则data 为True
        # 用户名存在
        if user_exist(input_name):
            # 用户名存在,则需再次进入循环=>再次输入用户名
            print("此用户已经存在,请重新输入!")
        # 用户名不存在
        else:
            # 循环输入密码,直到输入正确,退出循环
            while True:
                # 输入密码
                pwd = input("请输入密码:")
                # 检测密码长度不能低于3
                if len(pwd) > 3:
                    # 密码长度大于3,则需要再次输入密码
                    repwd = input("请再次输入密码:")
                    # 检测确认密码与密码是否一致
                    if pwd == repwd:
                        # 用户名、密码正确,就可以插入库的中。
                        adduser(input_name, pwd)
                        print("注册成功,用户名{}。".format(input_name))
                        # 结束循环
                        # 结束外循环
                        site = False
                        # 结束内循环
                        break

                    else:
                        print("两次密码输入不一致。")
                else:
                    print("输入的密码长度应该大于3,请重新输入!")


# 登录
def login():
    # 输入密码错误次数最多3次
    num = 3
    site = True
    while site:
        input_name = input("请输入需要登录的用户名:")
        user_message = user_exist(input_name)
        if user_message:
            # 用户存在,则校验用户是否在黑名单
            if black_exist(input_name):
                # 在黑名单,则需要重新输入用户名
                print("该用户已列入黑名单,不允许登录平台!")
            else:
                while True:
                    # 不在黑名单,则输入密码
                    pwd = input("请输入密码:")
                    # 判断输入的密码与数据库里的密码比较
                    # user_message=((user_name,user_password),)
                    if user_message[0][1] == pwd:
                        print("登录成功")
                        site = False
                        break
                    else:
                        # 密码不正确,则减少一次输入密码的次数
                        num -= 1
                        # 次数小于0次,则不允许输入。
                        if num == 0:
                            print("3次机会已使用完,该用户将被锁定!")
                            # 密码输入三次失败后,需要把该用户加入黑名单
                            add_is_black(input_name)
                            site = False
                            break
                        else:
                            print("密码不正确,请重新输入密码,你还有%d次机会输入密码" % (num))

        else:
            print("用户不存在,请重新输入!")


if __name__ == '__main__':
    while True:
        vars = "登录1,注册2,退出(任意内容):"
        print(vars)
        num = input('请输入对应的对号:')
        if num == '1':
            login()
        elif num == '2':
            register()
        else:
            print("欢迎下次再来...")
            break

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值