我正在嘗試測試以表單提交的信息(電子郵件地址和密碼)是否已存在于數據庫中。如果電子郵件存在,我想檢查數據庫中相應的哈希密碼是否與提交的密碼的哈希版本匹配。這是我的登錄路線的完整摘錄:# Login [email protected]("/login", methods=["GET", "POST"])def login(): """Log user in""" # Forget any user_id session.clear() # User reached route via POST (as by submitting a form via POST) if request.method == "POST": # Create a cursor cur = mysql.connection.cursor() # Ensure email was submitted if not request.form.get("email"): return apology("must provide email", 403) # Ensure password was submitted elif not request.form.get("password"): return apology("must provide password", 403) # Store email in a variable email = request.form.get("email") # Query if email is within database query = cur.execute("SELECT * FROM users WHERE email = %s", (email,)) # Ensure email exists and that the password is correct if len(query) != 1 or not check_password_hash(query[0]["hashedpassword"], request.form.get("password")): return apology("invalid email and/or password", 403) # Remember which user has logged in session["user_id"] = query[0]["id"] # Redirect user to the homepage return redirect("/") # User reached route via GET (as by clicking a link or via redirect) else: return render_template("login.html")我遇到困難的部分是: # Ensure email exists and that the password is correct if len(query) != 1 or not check_password_hash(query[0]["hashedpassword"], request.form.get("password")): return apology("invalid email and/or password", 403)在這里,我嘗試從數據庫中提取指定電子郵件地址的單行信息。我試圖使用 len 來查看是否存在單行(不能存在兩行,因為我已確保電子郵件地址列在數據庫中是唯一的),因此應該只有單行或沒有。
添加回答
舉報
0/150
提交
取消