1. Referenzmodell Für diese Aufgabe habe ich mich auf den Linux-Login-Authentifizierungsprozess bezogen und ihn mit Online-Banking, Alipay und anderen Sperrregeln kombiniert 🎜> 1) Der Authentifizierungsprozess bezieht sich auf die Linux-Anmeldung: Überprüfen Sie nach Eingabe des Benutzernamens und des Kennworts, ob der Benutzername vorhanden ist und ob der Benutzer gesperrt ist. Überprüfen Sie anschließend, ob das Kennwort korrekt ist wird Ihnen nur sagen, dass die Überprüfung fehlgeschlagen ist, nicht, ob der Benutzername oder das Passwort falsch ist, was die Schwierigkeit des Brute-Force-Crackens erhöht
2) In Bezug auf das Zählen und Sperren von die Anzahl der falschen Eingaben
, ich beziehe mich auf Folgendes:Banken und Alipay tun, das heißt, sie kümmern sich nur darum, wie oft Sie falsche Eingaben gemacht haben, und es ist ihnen egal wie oft Sie falsch eingegeben haben, was bedeutet, dass Sie zweimal und beim dritten Mal falsch eingegeben haben. Wenn Sie richtig eingegeben haben, wird die vorherige Zählung nicht gelöscht, das heißt, Sie haben heute 1.000 Mal richtig eingegeben und 997 Mal verloren. und nur dreimal falsch eingegeben. Leider müssen Sie es noch sperren. Und die drei falschen Eingaben müssen nicht aufeinander folgen. Nach dreimaliger Fehleingabe wird es gesperrt. 2. In Bezug auf das Speichern von Anzahl und Status erwäge ich das Beibehalten und Speichern
über Dateien sowie dieAkkumulation und Sperrung jeder Eingabefehleranzahl In der Datei gespeichert . Dies erhöht zwar die Dateioperation, gewährleistet jedoch die Zuverlässigkeit des Programms. Auf diese Weise ist die Zählung weiterhin gültig. Die Dateitypen sind wie folgt: alex sb lock 3 tom 666 unlock 0
geng 888 unlock 2
The Die erste Spalte ist der Benutzername, die zweite Spalte ist das Passwort, die dritte Spalte ist der Benutzerstatus (Sperren bedeutet gesperrt, Entsperren bedeutet nicht gesperrt) und die vierte Spalte ist die Anzahl der Anmeldungen (eigentlich nur die Anzahl der Anmeldungen). muss um eins erhöht werden, wenn der Fehler auftritt, nein. Machen Sie sich keine Sorgen, wenn es falsch ist.
Der Code lautet wie folgt:
with open(filename,) key,values lines = print( f.write( .join(lines) + values.insert( f.write( .join(values) + # messages = {:[,,],:[,,],:[,, # write_file(messages, __name__ == active = username = input( users_dict = {} #用户字典,用于存放用户的信息,键-用户名,值- with open(,) lines = line user_list = users_dict[user_list[]] = user_list[ username users_dict[username][] == print( (users_dict[username][]) < user_pwd = input( users_dict[username][] == print( (users_dict[username][]) != print( % ( - (users_dict[username][ users_dict[username][] = (users_dict[username][]) + print( users_dict[username][] = users_dict[username][] = write_file(users_dict, elif username == print() 运行结果如下: 请输入你的用户名(输入quit退出):tom 请输入密码:22 还有2次机会,用户将被锁定! 请输入密码:22 还有1次机会,用户将被锁定! 请输入密码:22 对不起,您输入的次数过多,你的用户名已经被锁定,请联系管理员! 请输入你的用户名(输入quit退出):alex 您输入的用户名已经锁定,请联系管理员!
Codebeschreibung:
1. Zwei Inhalte, die im heutigen Kurs nicht behandelt werden, werden hier verwendet: Wörterbücher und Funktionen zum Konvertieren von Benutzerinformationen in Wörterbücher Der Grund für das Speichern auf diese Weise besteht darin, festzustellen, ob der Benutzername beim Lesen der Datei vorhanden ist. Der Benutzername wird direkt als Schlüssel im Wörterbuch verwendet, und andere Informationen werden eins zu eins als Wert des Wörterbuchs verwendet Korrespondenz mit dem Schlüssel. Auf diese Weise ist nur der Benutzername erforderlich, um festzustellen, ob der Benutzername vorhanden ist.
2. Zeilen 61 und 62 des Codes schließen den Prozess der Umwandlung der Datei in ein Wörterbuch ab.
Originales Codebeispiel von Zhang Xiaoyu:
Highlights im obigen Code:
(1) continue: Beende diese Schleife. Der Code nach continue wird nicht ausgeführt, um den Zweck zu erreichen, dem Benutzer dies zu ermöglichen Nochmals eingeben. Auf der Webseite können Benutzer so lange tippen, bis sie sich entweder registrieren oder die Webseite schließen. (2) Das Dokument ist relativ standardisiert und enthält Erläuterungen
(3) Die Datei wird Zeile für Zeile gelesen und dann Zeile für Zeile in die Datei geschrieben. Beim Änderungsprozess müssen die Kenntnisse über Listen und Wörterbücher verwendet werden (4) " ".join(list) verkettet Strings und Listen, um neue Strings zu generieren;
(5) split() string split(); listet Spleißen auf.
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der spezifischen Schritte zum Schreiben eines Anmeldefensters. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!