J'écris un code pour implémenter un système de connexion utilisateur, dans lequel l'utilisateur entrera ses détails comme son nom et son mot de passe qui seront stockés dans un fichier texte. Quand il essaiera de se connecter, il demandera le nom d'utilisateur et le mot de passe et correspondra à celui stocké dans le fichier texte créé précédemment.
Il est probablement impossible de rechercher correctement dans le fichier texte
user=str(input('Do u have registration(Y/N): \n ')) if user =='Y': print('Please login now:') boom=str(input("Enter your name: ")) pass_inp=str(input('Enter your password: \n')) with open('user_database.txt','r') as f: if pass_inp in f.readlines() and boom in f.readlines(): print('Welcome User') else: print('Invalid Login ID') elif user == 'N': print('Please register now,fill the following details:') name=str(input("Register your name: \n")) password =str(input('Create your password:\n')) with open("user_database.txt",'a') as f: f.write(name+'\n') f.write(password+'\n') print('Account successfully created')`````````
3 Réponses :
En mettant de côté la raison de l'enregistrement du mot de passe et de l'utilisateur sous forme de texte brut dans un fichier et en permettant que le nom d'utilisateur et le mot de passe soient également identiques,
Veuillez vérifier si '\ n' dans f.write (name + '\ n')
est à l'origine du problème. (Est certainement)
Vous lisez le fichier texte deux fois avec
contents = f.readlines() if pass_inp in contents and boom in contents:
Définissez le contenu sur une variable, puis vérifiez la variable pour le nom et le mot de passe.
if pass_inp in f.readlines() and boom in f.readlines():Solution précédente à ce problème
. L'avantage de cette solution est qu'avec un petit changement de codage, il est capable de distinguer les noms d'utilisateur et les mots de passe lors de la vérification de ce que votre approche actuelle ne fait pas.
Les commentaires Hope vous aident à comprendre la logique:
# input return a string user = input('Do u have registration(Y/N): \n ') if user == 'Y': print('Please login now:') boom = input("Enter your name: ") pass_inp = input('Enter your password: \n') with open('user_database.txt','r') as f: lines = f.readlines() flag_founded = False for index, line in enumerate(lines): # user name found check if the line after it contains it's password if boom == line.replace('\n', ''): # password of this user should be in the next line password = lines[index+1].replace('\n', '') if pass_inp == password: flag_founded = True break # break the current loop no need to keep checking because user name should be unique if flag_founded: print('You are logged: ', boom) else: print('User name or password wrong') elif user == 'N': print('Please register now,fill the following details:') name = input("Register your name: \n") password = input('Create your password:\n') with open("user_database.txt", 'a') as f: f.write(name+'\n') f.write(password+'\n') print('Account successfully created')