>  기사  >  백엔드 개발  >  로그인 인터페이스

로그인 인터페이스

巴扎黑
巴扎黑원래의
2017-06-23 14:52:341392검색

과제 1: 로그인 인터페이스 작성

1. 사용자 이름과 비밀번호 입력

2. 인증 성공 후 환영 메시지 표시 3. 3번 실수 후 잠김 입력

아이디어:

(1) 사용자가 사용자 이름을 입력합니다.

(2) 잠금 파일로 이동하여 사용자 이름이 잠겨 있는지 확인합니다.

(3) 현재 사용자로 이동합니다. 사용자가 존재하는지 확인하기 위해

  (4) 사용자가 비밀번호를 입력하고 세 번 잘못 입력하면 잠깁니다.

 (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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.