You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Flask登录页输入错误信息时不显示错误提示如何解决

问题原因

  1. 核心逻辑问题:用户名密码输入错误时,SQL查询返回的结果集为空,不会进入原有代码的for循环,msg变量始终保持初始的空字符串,因此前端不会显示错误提示。
  2. 安全风险:原有代码直接拼接SQL字符串的写法存在严重SQL注入漏洞,攻击者可构造特殊字段绕过登录、窃取或删除数据库数据。

修正后的后端代码

@app.route('/', methods=['GET', 'POST'])
def login():
    msg = ""
    if request.method == "POST":
        usertype = request.form["UserType"]
        username = request.form["Username"]
        password = request.form["Password"]
        conn = sqlite3.connect("database.db")
        c = conn.cursor()
        # 使用参数化查询避免SQL注入
        c.execute("SELECT UserType,Username,Password FROM users WHERE UserType=? and Username=? and Password=?", (usertype, username, password))
        # 单用户匹配场景直接取单条结果即可,无需遍历全部结果
        matched_user = c.fetchone()
        if matched_user:
            session["loginsuccess"] = True
            session["username"] = username
            return redirect(url_for("navigate"))
        else:
            # 未匹配到用户直接赋值错误提示
            msg = "请输入正确的登录信息"

    return render_template("Login.html", msg=msg)

补充说明

原有HTML代码无需修改,已预留{{msg}}变量占位,后端逻辑修正后即可正常显示错误提示。

内容的提问来源于stack exchange,提问作者Moin Mohammed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:45:03