Войти с помощью TXT-файла - PullRequest
       1

Войти с помощью TXT-файла

0 голосов
/ 24 февраля 2020

Привет, я не могу заставить это работать. Кто-нибудь может помочь? Неважно, что вы вводите, похоже, что вы подтвердили правильность ввода, что, очевидно, не должно.

filename = "db.txt"

def login():
    print("LOGIN PAGE")
    input_username = input(str("Enter your username :"))
    input_password = input(str("Enter your password :"))
    logged_in = False
    with open('db.txt', 'r') as file:
        for line in file:
            username, password = line.split(',')
            if username == input_username:
                logged_in = password == input_password
                break

    if logged_in:
        print("LOGGED IN")

    else:
        signup()


# Register user

def signup():
    print("SIGN UP PAGE")
    file = open("db.txt", "a")
    regusername = input("Enter a username :")
    regpassword = input("Enter a password :")
    file.write(regusername + ":" + regpassword)
    file.write("\n")
    file.close()
    login()

login_or_signup = input("Do you want to log in or sign up :")

if login_or_signup == "log in":
    login()

elif login_or_signup == "sign up":
    signup()

else:
    print("Failed")

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020

Как отмечалось в моем вчерашнем комментарии: вам нужно разделить данные по тому же токену, который вы записали в файл:

Запись:

file.write(regusername + ":" + regpassword)   
file.write("\n")

Читайте:

username, password = line.split(',')           # use : instead of ,

Кроме этого - вы добавляете '\n' после PW, так что если вы читаете свой файл с помощью

with open('db.txt', 'r') as file:
    for line in file:
        username, password = line.split(',')

ваш пароль будет включать это '\n' - вам нужно удалить его, если вы сравните его с паролем, полученным input_password = input("Enter your password :"), у которого NO '\n' в конце:

 with open('db.txt', 'r') as file:
     for line in file:
         username, password = line.strip().split(',')

Когда вы находитесь на удалите ненужные str() вокруг строк и измените обработку файлов внутри def signup(), чтобы использовать with open (...) as file: ....

0 голосов
/ 24 февраля 2020

Было 3 ошибки, которые я мог видеть.

  1. Вы делали проверку на input_password неправильно.
  2. Установка logged_in на True выполнена неправильно.
  3. Вы пишете username and password в файл с разделителем ':' и пытается разделить, используя ','.

Попробуйте это:

filename = "db.txt"

def login():
    print("LOGIN PAGE")
    input_username = input("Enter your username :")
    input_password = input("Enter your password :")
    logged_in = False
    with open('db.txt', 'r') as file:
        for line in file:
            username, password = line.split(',')
            if username == input_username and password == input_password:
                logged_in = True
                break

    if logged_in:
        print("LOGGED IN")

    else:
        signup()


# Register user

def signup():
    print("SIGN UP PAGE")
    file = open("db.txt", "a")
    regusername = input("Enter a username :")
    regpassword = input("Enter a password :")
    file.write(regusername + "," + regpassword)
    file.write("\n")
    file.close()
    login()

login_or_signup = input("Do you want to log in or sign up :")

if login_or_signup == "log in":
    login()

elif login_or_signup == "sign up":
    signup()

else:
    print("Failed")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...