python计算机体系三层结构_Python tkinter 实现简单登陆注册 基于B/S三层体系结构,实现用户身份验证...

Python tkinter 实现简单登陆注册

最终效果

开始界面

注册

登陆

源码

login.py

# encoding=utf-8

from tkinter import *

from tkinter import messagebox as tkMessageBox

import mysql_connect as mys

import pymysql

import base64

#加密 将用户的密码加密后储存到数据库

def encryption(str):

str=str.encode(encoding="utf-8")

s2=base64.b64encode(str)

return s2.decode()

#解密 将数据库返回的密文解密后验证用户密码

def decryption(str):

str = str.encode(encoding="utf-8")

s1=base64.b64decode(str)

return s1.decode()

#处理注册

def newuser(name,pwd):

#声明全局变量,传递给insert

global cursor,db

pwd=encryption(pwd) #加密

if mys.name_exist(cursor,name): #返回正确的值说明用户名存在

tkMessageBox.showinfo(title='失败', message='用户名已存在!')

return False

else:

mys.insert_data(db=db,cursor=cursor,name=name,password=pwd)

tkMessageBox.showinfo(title='成功', message='注册成功')

#处理直接登录

def olduser(name,pwd):

global cursor

# print(name,pwd)

password=mys.get_password(cursor,name)

password=decryption(password) #解密

print("password : ",password)

print(pwd)

if password == pwd:

tkMessageBox.showinfo(title='成功', message='登陆成功! welcome back '+name)

else:

tkMessageBox.showinfo(title='失败', message='登录失败')

#处理注册窗口

def signin():

win1 = Toplevel()

l1 = Label(win1, text="注册")

l1.pack() # 这里的side可以赋值为LEFT RTGHT TOP BOTTOM

l2 = Label(win1, text="姓名:")

l2.pack() # 这里的side可以赋值为LEFT RTGHT TOP BOTTOM

sheet_text1 = StringVar()

sheet1 = Entry(win1, textvariable=sheet_text1)

sheet1.pack()

l3 = Label(win1, text="密码:")

l3.pack() # 这里的side可以赋值为LEFT RTGHT TOP BOTTOM

sheet_text2 = StringVar()

sheet2 = Entry(win1, textvariable=sheet_text2)

sheet2.pack()

def on_click1():

name = sheet_text1.get()

pwd = sheet_text2.get()

#调用处理新用户窗口

newuser(str(name),str(pwd))

Button(win1, text="press", command=on_click1).pack()

#处理登录窗口

def login():

# win1 = Tk.winfo_toplevel(root)

#焦点绑定到当前窗口,否则无法获取输入

win1 = Toplevel()

l4 = Label(win1, text="登录")

l4.pack() # 这里的side可以赋值为LEFT RTGHT TOP BOTTOM

l5 = Label(win1, text="姓名:")

l5.pack() # 这里的side可以赋值为LEFT RTGHT TOP BOTTOM

sheet_text3 = StringVar()

sheet3 = Entry(win1, textvariable=sheet_text3)

sheet3.pack()

l6 = Label(win1, text="密码:")

l6.pack() # 这里的side可以赋值为LEFT RTGHT TOP BOTTOM

sheet_text4 = StringVar()

sheet4 = Entry(win1, textvariable=sheet_text4)

sheet4.pack()

def on_click2():

name = sheet_text3.get()

pwd = sheet_text4.get()

olduser(name,pwd)

Button(win1, text="press", command=on_click2).pack()

#退出程序

def quit1():

root.quit()

if __name__ == '__main__':

try:

db = pymysql.connect("39.106.152.189", "study", "stfk0615", "study", use_unicode=True, charset='utf8')

cursor = db.cursor()

except:

print("connect error!")

root = Tk()

root.title('用户登录窗口')

#分别进入不同的窗口

Button(root, text="注册", command=signin).pack()

Button(root, text="登录", command=login).pack()

Button(root, text="退出", command=quit1).pack()

root.mainloop()

mysql_connect.py //封装MySQL操作

import pymysql

# import traceback

def name_exist(cursor,name):

exist_sql="""

SELECT PASSWORD

FROM INFO

WHERE NAME='%s' ;"""%(str(name)) #字符串匹配替换 name

cursor.execute(exist_sql)

result=cursor.fetchall()

if result:

return True #表示存在、

else:return False #表示不存在

def insert_data(db,cursor,name,password):

#插入数据

insert_sql="""

INSERT INTO INFO(NAME,PASSWORD) VALUES('%s','%s');"""%(str(name),str(password))

try:

cursor.execute(insert_sql) #执行sql

db.commit()

return True

except Exception:

print(Exception.args)

print('insert error')

return False

def creat_table(cursor,name):

# 创建数据表

sql="""

CREATE TABLE %s(

NAME CHAR(20) NOT NULL,

PASSWORD CHAR(20));

"""%(str(name))

try:

cursor.execute(sql)

return True

except:

print("creat_table error")

return False

def get_password(cursor,name):

#得到name对应的密码

sql="""

SELECT PASSWORD

FROM INFO

WHERE NAME='%s' ;"""%(str(name)) #字符串匹配替换 name

try:

cursor.execute(sql)

result=cursor.fetchall() #得到所有的结果

for a in result: #遍历结果 实际上返回的应该就只要一个值

print(a[0])

return a[0]

except:

print("get_error")

return False

def connect():

try:

db = pymysql.connect("39.106.152.189", "study", "stfk0615","study"

,use_unicode=True,charset='utf8')

#db.set_charset('utf-8')

cursor = db.cursor()

# cursor.execute('SET NAMES utf8;')

# cursor.execute('SET CHARACTER SET utf8;')

# cursor.execute('SET character_set_connection=utf8;')

return cursor

except:

print("connect error!")

return False

if __name__=='__main__':

db=pymysql.connect("39.106.152.189","study","stfk0615","study")

cursor=db.cursor()

db.close()

转发请注明出处,谢谢。

本源码用于 基于B/S三层体系结构,实现用户身份验证,实验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值