后台:
# -*- coding: UTF-8 -*-
import socket # 导入 socket 模块
import json
#import mysql.connector
import random
import threading
import os
#mysql_config = {'user':'root','password':'root','host':'127.0.0.1'
# ,'port':'3306','database' :'droneuser','charset' :'utf8'}
#conn = mysql.connector.connect(**mysql_config)
import pyodbc
conn =pyodbc.connect('DRIVER={SQL Server};SERVER=localhost;DATABASE=droneuser;UID=sa;PWD=1')
cursor =conn.cursor()
#cursor=conn.cursor()
def login(username,keys):
sql4 = "SELECT idj FROM dbo.users WHERE username = '%s';"%username
cursor=conn.cursor()
cursor.execute(sql4)
result_a = cursor.fetchone()
#通过fetchall得到的就是多行记录,是一个二维元组
if result_a == []:
return "账户不存在"
else:
sql2 = "SELECT keys FROM dbo.users WHERE username = '%s';"%username
cursor=conn.cursor()
cursor.execute(sql2)
result_b = cursor.fetchone()
if result_b[0] == keys:
for i in result_a:
idj=i[0]
m = idj*20-1
n = (idj-1)*20
suiji = random.randint(n,m)
sql6 = "SELECT miyue FROM dbo.miyue WHERE id = '%s';"%suiji
cursor=conn.cursor()
cursor.execute(sql6)
result = cursor.fetchone()
miyues = result[0]
miyue = miyues.split('|')
tmp = ['control2.py','message.txt','../phone/confirm.txt','../control/privatekey.txt']
f2 = open(tmp[3], 'w')
f2.write(miyue)
f2.close()
return "登录成功"
else:
return "密码不正确"
def logon(username,keys):
pass
sql5 = "SELECT count(idj) FROM users WHERE username = '%s'"%username
cursor=conn.cursor()
cursor.execute(sql5)
result_a = cursor.fetchone()
if result_a[0] == 1:
return "抱歉,账户已存在"
else:
sql1 = "SELECT max(idj) FROM dbo.users "
cursor=conn.cursor()
cursor.execute(sql1)
result = cursor.fetchone()
for i in result:
idj = i+1
sql3 = "INSERT INTO [dbo].[users] (username,keys,idj)values ('%s','%s','%s');"%(username,keys,idj)
cursor.execute(sql3)
for i in result:
pass
conn.commit()
return "注册成功('%s')"%username
s = socket.socket()
host = socket.gethostname()
port = 12345
s.bind((host, port))
s.listen(5)
while True:
c, addr = s.accept()
jieshou = c.recv(1024)
msg = jieshou.split('|')
if msg[0] == 'login':
huida = login(msg[1],msg[2])
c.send('huida|%s'%huida)
elif msg[0] == 'logon':
huida = logon(msg[1],msg[2])
c.send('huida|%s'%huida)
else:
pass
c.close() # 关闭连接
界面:
# -*- coding: UTF-8 -*-
# 登录和注册两个功能
import socket
import threading
import os
from Tkinter import * #引用Tk模块
'''def start'''
def fun_timer():
tmp = ['control2.py','message.txt','./confirm.txt','privatekey.txt']
file_message = os.path.exists(tmp[2])
# print file_message
if file_message == True:
t.insert(END, "%s\n"%"加密")
else:
t.insert(END, "%s\n"%"没有接收到信号")
timer = threading.Timer(2,fun_timer)
timer.start()
def login():
username2 = username.get()
keys2 = keys.get()
s = socket.socket()
host = socket.gethostname()
port = 12345
s.connect((host, port))
s.send('login|%s|%s'%(username2,keys2))
huidas = s.recv(1024)
huida = huidas.split('|')
if huida[0] == "huida":
t.delete('1.0',END)
t.insert('1.0', "%s\n"%huida[1])
if huida[1] == "登录成功":
timer = threading.Timer(1,fun_timer)
timer.start()
s.close()
def logon():
username2 = username.get()
keys2 = keys.get()
s = socket.socket()
host = socket.gethostname()
port = 12345
s.connect((host, port))
s.send('logon|%s|%s'%(username2,keys2))
huidas = s.recv(1024)
huida = huidas.split('|')
if huida[0] == "huida":
t.delete('1.0',END)
t.insert('1.0', "%s\n"%huida[1])
s.close()
'''def end'''
root = Tk() #初始化Tk()
root.colors = "#DA70D6 Orchid"
root.title("phone login")
root.geometry('400x248') #是x 不是*
root.resizable(width=True, height=True) #宽不可变, 高可变,默认为True
# create a popup menu
menu2 = Menu(root, tearoff=0)
menu2.add_command(label="logon", command=logon)
menu2.add_command(label="login", command=login)
root.config(menu=menu2)
frm = Frame(root,bg='#F17C67')
frm.pack()
frm1 = Frame(frm,bg='#F17C67')
frm1.pack()
l1 = Label(frm1, text="username:", bg="#F17C67", font=("Arial", 12), width=10, height=2)
l1.pack(side=LEFT)#这里的side可以赋值为LEFT RTGHT TOP BOTTOM
username = StringVar()
e = Entry(frm1, textvariable = username)
username.set("")
e.config(bg ='#F17C67')
e.pack(side=RIGHT)
frm2 = Frame(frm,bg='#F17C67')
frm2.pack()
l2 = Label(frm2, text="keys:", bg="#F17C67", font=("Arial", 12), width=10, height=2)
l2.pack(side=LEFT) # arial 无衬线字体
keys = StringVar()
e = Entry(frm2, textvariable = keys)
e.config(bg ='#F17C67')
keys.set("")
e.pack(side=RIGHT)
frm3 = Frame(frm)
frm3.pack()
t = Text(frm3)
t.config(bg='#F17C67')
t.pack()
root.mainloop() #进入消息循环