python - 使用 Python Flask 向现有用户注册时 Web 应用程序显示数据库错误

标签 python html mysql flask

我正在使用 Flask over Python 来开发登录系统。

当用户使用现有用户名注册时,它不会返回错误消息,而是返回数据库错误,这是一个安全缺陷

@app.route('/register', methods=['GET','POST'])
def register():
  form = RegisterForm(request.form)
  if request.method == 'POST' and form.validate():
    email = form.email.data
    password = sha256_crypt.encrypt(str(form.password.data))
    cursor=db.cursor()
    if cursor.execute("INSERT INTO user(email, password) VALUES(%s ,%s)", (email, password)):
        db.commit()
        flash('Success','success')
    else:
        flash('Success','error')
    cursor.close()
    redirect(url_for('index'))

  return render_template('register.html', form=form)

如何控制它返回的消息?

最佳答案

改进插入语句以处理已经存在的值:

cursor.execute('INSERT IGNORE INTO user(email, password) VALUES(%s ,%s)')

这样就不会出现DB错误,可以根据返回值进行处理。

关于python - 使用 Python Flask 向现有用户注册时 Web 应用程序显示数据库错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46882954/

相关文章:

Python:找到最小元素的最后一个索引?

python - 如何根据字典列表中的特定值在单独的 Dataframe 列中创建列表?

python - 在 Mac OS X 上使用 virtualenv

python - 在 python mysql 执行中转义 %

php - 页面中未相应显示产品名称、品牌和价格

html - 我如何*真正*证明 HTML+CSS 中的水平菜单合理?

javascript - 根据请求将 MySQL 数据从 PHP 发布和检索到 html

javascript - jQuery 函数是否仍可用于 AJAX 调用返回的 HTML 表?

php - 如何从 MySQL 列中提取图像以显示在 Web 应用程序上

mysql - 在 MySQL 中强制区分大小写的问题