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

  • 相关阅读:
    【LA3461】Leonardo的笔记本
    【洛谷P3708】Koishi的数学题
    【Uva11762】Race to 1
    【uva11421】玩纸牌
    【反演复习计划】【51nod1594】Gcd and Phi
    【乱入】Uva11021麻球繁衍
    【反演复习计划】【bzoj4407】于神之怒加强版
    BZOJ3293: [Cqoi2011]分金币
    BZOJ2400: Spoj 839 Optimal Marks
    BZOJ1391: [Ceoi2008]order
  • 原文地址:https://www.cnblogs.com/cxstudypython/p/12152618.html
Copyright © 2011-2022 走看看