所以我尝试创建一个登录系统,有点像普通的python终端。我做了一个注册功能,但我正在努力与登录一个。我正在尝试将我的输入与用户名和密码进行比较,完成后,我将添加id。但我怎么能做到,我什么都试过了
当我运行代码并输入正确的详细信息时,它告诉我“登录失败,用户名或密码错误”,这意味着我的if语句有问题
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="root",
password=""
)
mycursor = mydb.cursor(buffered=True)
def login():
mycursor.execute("USE logintest")
login_username = input("Please enter your username or email: ")
login_password = input("Please enter your password: ")
check_login = f"SELECT username FROM users WHERE username = '{login_username}'"
check_password = f"SELECT password FROM users WHERE password = '{login_password}'"
mycursor.execute(check_login)
username_result = mycursor.fetchall()
mycursor.execute(check_password)
password_result = mycursor.fetchall()
passwordr = password_result
usernamer = username_result
print(usernamer)
print(passwordr)
if login_password == passwordr and login_username == usernamer:
print("Logged in successfully")
else:
print("Login failed, wrong username or password")
def register():
mycursor.execute("USE logintest")
new_username = input("please pick a username: ")
new_email = input("please enter your email: ")
new_password = input("please pick a password: ")
insert_new_user = "INSERT INTO users (username, email, password) VALUES (%s, %s, %s)"
new_user = (new_username, new_email, new_password)
mycursor.execute(insert_new_user, new_user)
mydb.commit()
print("User successfully created! insert id:", mycursor.lastrowid)
def options():
print("1. login")
print("2. register")
options = input("please pick 1 or 2: ")
if "1" in options:
login()
elif "2" in options:
register()
else:
print("please only select 1 or 2")
options()
options()
您应该创建一个用于验证登录详细信息的函数。这是如何验证登录详细信息的,它应该位于函数内部:
注:?是pyodbc模块的参数标记,如果使用mysql连接器,请替换?用%s签名
但是,如果您使用的是散列(salt)密码,则格式会有所不同
将此逻辑应用于代码:
通常,当您从python中的数据库获取数据时,它会返回一个数据列表,python中的输入是一个字符串,所以换句话说,您将一个字符串和一个始终为false的列表进行比较
相关问题 更多 >
编程相关推荐