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