ログインインターフェース

巴扎黑
リリース: 2017-06-23 14:52:34
オリジナル
1465 人が閲覧しました

課題 1: ログインインターフェイスを作成します

1. ユーザー名とパスワードを入力します

2. 認証に成功した後、ウェルカムメッセージを表示します 3. 3 回間違えたら「Locked」と入力します

アイデア:

(1) ユーザーがユーザー名を入力します。

(2) ロック ファイルに移動して、ユーザー名がロックされているかどうかを確認します。

(3) 現在のユーザーに移動します。ユーザーが存在するかどうかを確認するため

(4) ユーザーはパスワードを入力し、3 回間違えるとロックされます

(5) ロック後、ユーザー名は現在のファイルから削除され、追加されます。ロックされたファイルに。

ファイルの読み取り、変更、書き込み操作には注意してください。これらの操作はリストを使用して完了する必要があります。そうしないと、不要なエラーが発生します。最後に、これらの操作を完了する関数を定義し、使用時にこれらを呼び出します。 .関数で十分です。

リストファイルを操作するときは、改行の処理や要素の追加方法に注意する必要があり、これらの方法は、ファイルの形式をきれいに保つために、リストと辞書を使用してファイルを読み書きするのに最適です。

コードは次のとおりです:

import os,sys,getpass,collections
retry_limit = 3   #密码错误三次被锁定
retry_count = 0   #起始次数是0次

def locked_user(users,filename):
    #用于存放锁定用户的文件,当用户锁定的时候,要从原文件删除,添加到新的文件中
    with open(filename,"w+") as locked_f:for key,value in users.items():
            line = []
            line.append(key)
            line.append(value)
            file_line = " ".join(line) + "\n"locked_f.write(file_line)

active = Trueif __name__ == "__main__":while True:
        username = input("请输入用户名(输入quit退出):")
        with open("account_lock.txt","r") as f:
            user_lists = f.readlines()for user_list in user_lists:if user_list.strip() == username:
                    print("您好,你的用户已经被锁定,请联系管理员!")continue    #如果用户锁定,结束当前循环,执行下一次用户输入else:
                    passif username == "quit":
            sys.exit(0)

        with open("account.txt") as active_f:
            users_dict = collections.OrderedDict()for line in active_f:
                user,pwd = line.strip().split()
                users_dict[user] = pwdif username in users_dict.keys():while retry_count < retry_limit:
                passwd = getpass.getpass("请输入你的密码:")  # 隐藏式输入密码
                # 判断用户是否在用户列表中if users_dict[username] == passwd:
                    print("欢迎回来,认证成功!")breakelse:if retry_count != 2:
                        #提示用户注意,还有几次机会将被锁定
                        print("您输入的密码不对,您还有%d次机会,否则系统将被锁定!" % (2 - retry_count))
                    retry_count += 1else:
                print("您输入的次数过多,%s已被锁定,请联系管理员" %username)

                #用户锁定之后,要把锁定的用户从当前文件删除,移到锁定文件中
                users_dict.pop(username)
                locked_user(users_dict,"account.txt")
                with open("account_lock.txt","a+") as a_f:
                    a_f.write(username + "\n")else:
            print("对不起,您输入的用户不存在,请重新输入!!!")
ログイン後にコピー

上記のコードはログインインターフェイスの機能を実装していますが、いくつかの小さな欠陥があります。つまり、ロックファイルの書き込みが正しく行われていません。 OK の場合、このメソッドは前のファイルの書き込みと読み取りのみを実行し、それをリストに追加してから、ロックされたユーザーをこのリストに追加して、コードを再度読み取ります。以下修正させていただきます。

         with open(filename,)           key,value              line =               file_line =  .join(line) +    active =  __name__ ==               retry_limit =          retry_count =          username = input(         with open(,)              user_lists =              user_list                   user_list.strip() ==                     print(                                                 username ==              sys.exit(          with open()              users_dict =              line                  user,pwd =                 users_dict[user] =           username               retry_count <                 passwd = input(                   users_dict[username] ==                     print(                                                            retry_count !=                           print( % ( -                     retry_count +=                                print( %                    locked_user(users_dict,                 with open(,)                       user_lines =                     user_messages =                      user_line                     with open(,)                        user_message                          user_message = user_message +                         print()
运行如下:
请输入用户名(输入quit退出):zeng
请输入你的密码:222
您输入的密码不对,您还有2次机会,否则系统将被锁定!
请输入你的密码:222
您输入的密码不对,您还有1次机会,否则系统将被锁定!
请输入你的密码:222
您输入的次数过多,zeng已被锁定,请联系管理员
['chang', 'geng', 'xue', 'zeng']
请输入用户名(输入quit退出):zhu
请输入你的密码:333
您输入的密码不对,您还有2次机会,否则系统将被锁定!
请输入你的密码:333
您输入的密码不对,您还有1次机会,否则系统将被锁定!
请输入你的密码:333
您输入的次数过多,zhu已被锁定,请联系管理员
['chang', 'geng', 'xue', 'zeng', 'zhu']
请输入用户名(输入quit退出):quit
ログイン後にコピー
以下の図に示すように、コードでは、ファイルを書き込むときに変換のステップを実行します。

上記は、一般的に使用される形式のファイル変換プロセスです。ただし、「w」を使用してファイルを読み取る場合は、元のファイルの内容が破壊されることに注意してください。誤って削除しないように注意してください。ファイルライブラリ 時間になると、ボスが追い越します。

以上がログインインターフェースの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート