1、創(chuàng)建用戶表
表結(jié)構(gòu)如下
id
uname
upwd
isdelete
注意:需要對密碼進(jìn)行加密仍秤。
如果使用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())
創(chuàng)建表
create table userinfos(
id int primary key auto_increment,
uname varchar(20),
upwd char(40),
isdelete bit default 0
);
2苇本、接收輸入并驗證
1)創(chuàng)建testLogin.py文件袜茧,引入hashlib模塊、MysqlHelper模塊瓣窄。
2)接收輸入惫周。
3)根據(jù)用戶名查詢,如果未查到則提示用戶名不存在康栈。
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