Ist der Python Code so in Ordnung?
while True:
UserInput1 =input("Vorname \n ").upper()
UserInput2 =input("Passwort \n ").upper()
if UserInput1 == "NAME1" and UserInput2 == "PASSWORT1":
print("Herzlich Wilkommen " + UserInput1)
break
elif UserInput1 == "NAME2" and UserInput2 == "PASSWORT2":
print("Herzlich Wilkommen " + UserInput1)
break
else:
print("Falscher Benutzername oder Passwort, bitte in 10 Sekunden erneut versuchen:\n"
"KEINE EINGABEN MACHEN! \n"
"KEINE EINGABEN MACHEN! \n ")
for x in range(0,534944449,1):
x
Wusste nicht wie ich sonst diese 10 Sekunden machen soll, in denen der Benutzer warten muss. Leider kann er immer noch eingaben machen, die dann jedoch falsch sind.
Die x printe ich bewusst nicht, da der Benutzer ja nicht den Code sehen soll, also dass quasi die Zahlen angezeigt werden
3 Antworten
Fürs Warten legst Du Dich mit sleep() schlafen.
Statt if-elif-Tiraden nutzt Du structural matching, oder wenn es entsprechend viele Paarungen sind gleich eine geeigneten Datenstruktur.
Passwörter werden nicht im Klartext hinterlegt.
danke dir, ja so weit bin ich leider noch nicht, kann gerade mal die Grundlagen
Natürlich kannst du nicht einfach das Passwort so benutzen.
Eigentlich musst du es verschlüsseln.
Aber zum testen geht es erst mal.
Mit der x Schleife bekommst du natürlich keine richtige 10Sek Schleife hin.
Ideal wäre natürlich die Zeit je Fehlversuch hochzuzählen.
Damit muss ein User der dich nur vertippt hat nicht gleich so lange warten und Hacker oder automatische Bots würde es durch die ständig längere Pause immer schwerer.
Ja, das stimmt. Für Passwörter sehr gut. Speichere den hash und haste die Eingabe. Vergleiche diesen hash mit dem gespeichertem hash, wenn er gleich ist, Ist das Passwort richtig.
Wenn du leeren Code irgendwo hin schreiben willst, nutzt du das wort 'pass'.
Um ein wenig Zeit vergehen zu lassen brauchst du die Bibliothek time.
Du machst also ganz oben import time
Und im Code nutzt du dann einfach time.sleep(10) #10 Sekunden nichts tun.
So wie du das machst, würde ich es nicht tun, da der Code auf jedem Rechner unterschiedlich lange laufen wird, da jeder Rechner unterschiedlich schnell die Anweisungen abarbeitet. Auf alten, schwachen Rechnern könnte der Code somit bestimmt ne Minute laufen und auf Leistungsstarken vlt nur ne Sekunde.
Eigenlob stinkt 😉 auch wenn die Antwort nicht schlecht ist
War nicht als Eigenlob gemeint. Habe nur Lust auch ein Communityexperte zu sein und mitbekommen, dass man dafür Sternchen sammeln muss. Theoretisch ists ja bereits Eigenlob, dass man einen Kommentar schreiben tut :D Also stinkst du genauso wie ich! Nur ich will so einen blöden Expertenstatus, weils einfach cool ist und man den so kriegen tut. Habe es bereits in einem anderen Bereich ohne Betteln versucht. Und in diesem Bereich wäre der Status angesichts meiner Ausbildung und dem Niveau hier wohl gerechtfertigt :D
Also stinkst du genauso wie ich!
Wie Bitte?
Ich habe es nötig um Sterne zu betteln
Im übrigen sollten die nach der Qualität der Antwort verteilt werden.
D.h. die beste Antwort- egal von wehm.
verstehe danke, aber man muss doch garnicht pass davor schreiben oder? Es reicht doch auch wenn man die Variable einfach nicht printed, sondern nur ausführt.
pass ist extra das Schlüsselwort für genau diesen Fall. Wirkt viel professioneller. Ich glaube, dass du dadurch auch Zugriffe auf die Variable sparst... Und andere benefits dabei hast. Weiß es aber nicht zu 100%
Verschlüsseln wäre nicht sicher, also wenn dann hashen