账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    python与sql sever实现登录模块时一直有密码错误的bug
    21
    0

    后台:

    # -*- 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()         #进入消息循环
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 星海寂寥 普通会员 1楼
      502 Bad Gateway

      502 Bad Gateway


      nginx
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部