zoukankan      html  css  js  c++  java
  • Python

    流程:

    注册:1.从用户手里拿到数据 —>2.判断数据是否符合要求—>3.不符合就要求用户重新输入—>4.符合那么就执行数据库语句(插入数据),插入前需要对数据库查重—>5.重复返回用户数据已存在—>6.不重复那么就插入成功并告知用户注册成功

    登陆:1.从用户手里拿到数据—>2.判断数据是否符合要求—>3.不符合就要求用户重新输入—>4.符合那么就执行数据库语句(查询数据)—>5.有数据判断密码是否正确,密码正确那么就登陆成功—>6.无数据返回用户不存在

    import pymysql
    import re
    import hashlib
    
    # 建立通道
    db = pymysql.connect(host="127.0.0.1", user="root", password="12345678",
                         database="cxtest")
    # 创建游标
    cursor = db.cursor()
    md5 = hashlib.md5()
    
    
    # 注册方法
    def register():
        telephone = input('请输入手机号:')
        password = input('请输入密码(数字字母下划线6-12位):')
        # 1.用正则检验用户输入是否合法
        if not (re.match('1[3-8][0-9]{9}$', telephone) and re.match('w{6,12}$', password)):
            print('请输入正确的用户名或密码!')
            return
        # 2.查询数据库中手机号是否已经被注册
        sql = 'select telephone from use_info where telephone = "{}"'.format(telephone)
        cursor.execute(sql)
        if cursor.rowcount:
            print('该手机号已注册!')
            return
        # md5加密
        md5.update(password.encode('utf8'))
        password = md5.hexdigest()
        try:
            # print(type(telephone), type(password))
            sql = 'insert into use_info values("{}","{}")'.format(telephone, password)
            cursor.execute(sql)
            db.commit()
            print("注册成功")
        except:
            print('注册失败!')
        finally:
            # 关闭游标
            db.close()
    
    
    def login():
        # 输入用户名和密码
        telephone = input('请输入手机号:')
        password = input('请输入密码(数字字母下划线6-12位):')
        if not (re.match('1[3-8][0-9]{9}$', telephone) and re.match('w{6,12}$', password)):
            print('请输入正确的用户名或密码!')
            return
        sql = 'select telephone,password from use_info where telephone = "{}"'.format(telephone)
        cursor.execute(sql)
        if not cursor.rowcount:
            print("用户不存在")
            return
        md5.update(password.encode("utf-8"))
        password = md5.hexdigest()
        if cursor.fetchone()[1] != password:
            print("请输入正确的密码")
            return
        print("登陆成功")
    
    
    if __name__ == '__main__':
        while True:
            print('请选择您的操作:')
            print('1.注册')
            print('2.登陆')
            print('0.退出')
            choose = input('请输入您的选择(1,2,0):')
            if choose == '1':
                register()
                print('注册成功,即将退出')
                break
            elif choose == '2':
                login()
                print('登陆成功,即将退出')
                break
            elif choose == '0':
                break

    需要注意的情况是: cursor.execute(sql)执行sql语句时,应该是最容易报错的地方,写代码是需要先注意自己数据表的数据类型等。

    知识点:正则 md5 pymysql

  • 相关阅读:
    ssm 在不同的数据库中进行切换(开启事物禁用)
    引入xfire-all.jar后导致sping配置异常
    单点登录cas的最简单使用
    win10下cmd命令不能用
    前端json 两个重要的方法
    maven 工程下第三方jar 包的引入和打包 war
    idea 中main 方法不能运行
    从sqlServer 分页查询谈${}和#{}
    can与could区别
    线程同步与异步区别
  • 原文地址:https://www.cnblogs.com/cxstudypython/p/12152618.html
Copyright © 2011-2022 走看看