首頁 > 後端開發 > Python教學 > 如何寫登陸介面?

如何寫登陸介面?

PHP中文网
發布: 2017-06-20 13:46:00
原創
1277 人瀏覽過

   撰寫登陸介面 

    1.輸入使用者名稱與密碼

#    2.認證成功後顯示歡迎訊息

    3.失敗三次後鎖定

   想法:要求是編寫登陸接口,那麼要有一個存放用戶信息的模組;三次後鎖定,要有一個存放鎖定用戶信息的模組;我們知道,保存用戶信息有兩種方式,一種是數據庫保存,一種是文件保存,現在我們只學習了文件保存,因此要有兩個文件,一個是用戶資訊文件,一個是鎖定用戶資訊文件。

    要從檔案中讀取訊息,新增訊息,修改訊息。

    readme:

#   (1)使用者輸入使用者名稱;

#  (2)使用者輸入使用者名稱;

#  (2)使用者名去鎖定檔案中驗證是否鎖定;如果鎖定讓使用者聯絡管理員解決;

   (3)如果沒有鎖定去使用者檔案驗證使用者是否存在,存在讓使用者輸入密碼,輸入成功後顯示歡迎訊息;輸錯三次後鎖定用戶;

   (4)如果用戶不在用戶文件中,提示用戶沒有註冊,需要註冊,編寫註冊模組,讓用戶註冊,註冊之後添加用戶到用戶列表中,並且顯示歡迎訊息,不讓用戶在進行輸入,自動連結到登入狀態。

    流程圖如下:

 

active = None
#程序执行的标识符

def verification(username):"""验证用户是否锁定"""locked_users = []
    with open("locked_file") as locked_f:for line in locked_f:
            locked_user,locked_pwd = line.split(":")
            locked_users.append(locked_user)
        print(locked_users)if username in locked_users:
        print("对不起,你的用户名已经被锁定,请联系管理员!")else:
        active = Truereturn active

def is_registered(username):"""验证用户是否注册,注册就让用户登录,未注册让用户选择重新输入或者注册"""users = {}
    with open("active_file","r+") as f:for active_line in f:
            user,pwd = active_line.split(":")
            users[user] = pwdif username in users.keys():
        test_num = 0while test_num < 3:
            user_pwd = input("请输入您的密码:")if user_pwd == users[username]:
                print("welcome back,have a good time!")return Falseelse:
                test_num += 1else:
            #用户输入三次以上锁定用户,使用的是while...else...方法
            print("对不起,你输入的次数过多,你的用户已经被锁定,请联系管理员!")
            mes = "\n" + username + ":" + users[username]
            with open("locked_file","a") as f1:
                f1.write(mes)return Falseelse:
        print("您输入的用户名不存在,请按照下面的提示选择!")
        print("注册:请输入1\n登录:请输入2")
        num = input("请输入你的选择:")if num == "1":
            register_name = input("请输入你要注册的用户名:")while True:
                register_pwd = input("请输入你的密码:")
                register_pwd2 = input("请再次输入你的密码:")if register_pwd == register_pwd2:breakelse:
                    print("您输入的密码不对,请重新输入")
            message = "\n" + register_name + ":" + register_pwd
            print("Thank for your registing,have a good time!")
            with open("active_file","a") as f_obj:
                f_obj.write(message)return False

        elif num == "2":
            user_name = input("请重新输入你的用户名:")
            verification(user_name)if __name__ == "__main__":

    username = input("请输入你的用户名:")
    active = verification(username)while active:
        active = is_registered(username)
登入後複製

    上面程式碼實現了驗證和鎖定的功能,也實現了新用戶的註冊功能,但是有一個缺陷,就是當使用者鎖定的時候沒有從這個目前檔案中刪除,新增到鎖定使用者資訊的檔案中,往檔案中新增資訊很簡單,但是從檔案中刪除訊息卻不是很簡單,不能像清單那樣隨心所欲的動作。只能先轉換,而且清單中操作檔案的時候,換行符號等等這些東西有很噁心。上面程式碼會進行如下轉換,學習本來就是一件繁瑣的事情,但是也要去做的完美,下面會參考別人寫的程式碼,學習一下別人如何實現文件中不需要的資訊的刪除,然後好好完善一下上面的程式碼。

    ######### ####

以上是如何寫登陸介面?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板