Как использовать текст из моей базы данных для аутентификации в качестве имен пользователей и паролей? - PullRequest
0 голосов
/ 08 ноября 2018

Мой userpass.txt выглядит так:

gabiel, бабы

Sabiel, понт

mabiel, blont

вместо того, чтобы использовать bonjovi в качестве имени пользователя и isagod в качестве пароля, как мне использовать левый столбец текстового файла, связанный со словами в правом столбце текстового файла, для доступа? Это такой базовый код, потому что мне 15 лет и я в школе.

import time
import sqlite3
conn = sqlite3.connect("UserPass.db")
cursor = conn.cursor()

print("*"*50)
print("Authentication Database")
print("*"*50)

cursor.execute("""
CREATE TABLE tblUserPass
(
    usernames TEXT,
    passwords TEXT,
    primary key (usernames)
)"""
               )
print("tblUserPass created in UserPass.db")

def readTextFile(userFile):
    numRecs = 0
    userDBRec = []
    userTextRec = userFile.readline()
    while userTextRec != "":
        numRecs += 1
        field = userTextRec.split(",")
        usernames = field[0]
        passwords = field[1]
        print(usernames, passwords)
        userDBRec.append(usernames)
        userDBRec.append(passwords)
        cursor.execute ("insert into tblUserPass VALUES (?,?)", userDBRec)
        conn.commit()

        userDBRec = []
        userTextRec = userFile.readline() 
    return numRecs

userFile = open("UserPass.txt", "r")
numRecs = readTextFile(userFile)
print("\n",numRecs, "records transferred")
userFile.close()

for rows in cursor.execute('SELECT * FROM tblUserPass'):
    print(rows[1])

username=input("enter user")
password=input("enter pass")

while username!='bonjovi' or password!='isagod':
    print("one of 'em incorrect")
    time.sleep(1)
    print("go again")
    username=input("ENTER USER AGAIN")
    password=input("ENTER PASS AGIAN")

print("hento and welcom")

1 Ответ

0 голосов
/ 08 ноября 2018

Сначала вы никогда не должны хранить пароль в виде открытого текста в вашей базе данных, хешируйте его, а затем сохраняйте .

На самом деле это простой запрос БД,

username=input("enter user")
password=input("enter pass")

while cursor.execute(f"SELECT * FROM tblUserPass where usernames='{username}' AND passwords='{password}'").fetchone() is None:
    print("one of 'em incorrect")
    time.sleep(1)
    print("go again")
    username=input("ENTER USER AGAIN")
    password=input("ENTER PASS AGIAN")

print("hento and welcom")

запрос заключается в поиске строки, которая соответствует как имени пользователя, так и паролю.

Наконец, добро пожаловать в SO и браво, которые выступают с инициативой писать вещи с нуля.

EDIT

До этого, это небольшая проблема, когда вы инициализируете вашу базу данных, когда вы делаете userTextRec = userFile.readline() на самом деле в конце есть символ новой строки, поэтому весь ваш пароль (за исключением последней строки) суффикс \n. Чтобы удалить его, выполните field = userTextRec.split('\n')[0].split(",").

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