美文网首页
用mysql实现登录注册功能

用mysql实现登录注册功能

作者: 流光汐舞 | 来源:发表于2017-09-16 16:20 被阅读0次

1、创建用户表

表结构如下
id
uname
upwd
isdelete
注意:需要对密码进行加密。
如果使用md5加密,则密码包含32个字符。
如果使用sha1加密,则密码包含40个字符,这里使用这种方式。

md5加密方式:

import hashlib
pwd = '123456'
my_md5 = hashlib.md5()
my_md5.update(pwd.encode('utf-8'))
print(my_md5.hexdigest())

sha1加密方式:

import hashlib
pwd = '123456'
my_sha1 = hashlib.sha1(pwd.encode('utf-8'))
print(my_sha1.hexdigest())

创建表

create table userinfos(
    id int primary key auto_increment,
    uname varchar(20),
    upwd char(40),
    isdelete bit default 0
);

2、接收输入并验证

1)创建testLogin.py文件,引入hashlib模块、MysqlHelper模块。
2)接收输入。
3)根据用户名查询,如果未查到则提示用户名不存在。
4)如果查到则匹配密码是否相等,如果相等则提示登录成功,如果不相等则提示密码错误。

3、完整代码(用于测试)

from pymysql import *
from hashlib import *

class MysqlHelper(object):
    def __init__(self, host, port, db, user, passwd, charset='utf8'):
        self.host = host
        self.port = port
        self.db = db
        self.user = user
        self.passwd = passwd
        self.charset = charset

    def connect(self):
        self.conn = connect(host = self.host, port = self.port, db = self.db, user = self.user,
                            passwd = self.passwd, charset = self.charset)
        self.cursor = self.conn.cursor()

    def close(self):
        self.cursor.close()
        self.conn.close()

    def __edit(self, sql, params = None):
        self.cursor.execute(sql, params)
        self.conn.commit()

    def insert(self,sql, params = None):
        self.__edit(sql, params)

    def delete(self,sql, params = None):
        self.__edit(sql, params)

    def update(self,sql, params=None):
        self.__edit(sql, params)

    def select_one(self, sql, params=None):
        result = None
        try:
            self.cursor.execute(sql, params)
            result = self.cursor.fetchone()
        except Exception as e:
            print(e)
        return result

    def select_all(self, sql, params=None):
        self.cursor.execute(sql, params)
        return self.cursor.fetchall()

def do_md5(value):
    my_md5 = md5()
    my_md5.update(value.encode('utf-8'))
    return  my_md5.hexdigest()

def do_sha1(value):
    my_sha1 = sha1(value.encode('utf-8'))
    return my_sha1.hexdigest()

def register():
    username = input('输入用户名:')
    userpwd = input('输入密码:')
    userpwd = do_md5(userpwd)
    helper = MysqlHelper('192.168.14.57', 3306, 'laowang', 'root', '123')
    helper.connect()
    userinfo = helper.select_one("select uname from userinfos where uname=%s", username)
    if userinfo == None:
        sql = 'insert into userinfos(uname,upwd) values(%s,%s)'
        params = [username, userpwd]
        helper.insert(sql, params)
        helper.close()
        print('注册成功!')
    elif userinfo[0] == username:
        print('失败!该用户名已注册!请重新输入...')
        return

def enter():
    username = input('输入用户名:')
    userpwd = input('输入密码:')
    userpwd = do_md5(userpwd)
    helper = MysqlHelper('192.168.14.57', 3306, 'laowang', 'root', '123')
    helper.connect()
    sql = "select upwd from userinfos where uname=%s"
    params = [username]
    userinfo = helper.select_one(sql, params)
    if userinfo == None:
        print('用户名错误')
    elif userinfo[0] == userpwd:
        print('登录成功')
    else:
        print('密码错误')

if __name__ == '__main__':
    while True:
        num = int(input('请选择 1、登录  2、注册  3、退出 :'))
        if num == 1:
            enter()
        elif num == 2:
            register()
        else:
            break

相关文章

网友评论

      本文标题:用mysql实现登录注册功能

      本文链接:https://www.haomeiwen.com/subject/mcxusxtx.html