修复验证码bug
This commit is contained in:
parent
9cbb6b022c
commit
89cb0af79a
53
app.py
53
app.py
@ -197,6 +197,59 @@ def get_db_connection():
|
|||||||
print(f"Database connection error: {e}")
|
print(f"Database connection error: {e}")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def generate_captcha():
|
||||||
|
# 生成6位随机验证码
|
||||||
|
captcha_code = ''.join(random.choices(string.ascii_uppercase + string.digits, k=6))
|
||||||
|
conn = get_db_connection()
|
||||||
|
if conn:
|
||||||
|
try:
|
||||||
|
cursor = conn.cursor()
|
||||||
|
# 清除旧的验证码
|
||||||
|
cursor.execute("DELETE FROM captcha WHERE created_at < NOW() - INTERVAL 10 MINUTE")
|
||||||
|
# 插入新验证码
|
||||||
|
cursor.execute("INSERT INTO captcha (code) VALUES (%s)", (captcha_code,))
|
||||||
|
conn.commit()
|
||||||
|
return captcha_code
|
||||||
|
except Error as e:
|
||||||
|
print(f"Database error: {e}")
|
||||||
|
return None
|
||||||
|
finally:
|
||||||
|
if conn.is_connected():
|
||||||
|
cursor.close()
|
||||||
|
conn.close()
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def verify_captcha(user_input):
|
||||||
|
"""验证用户输入的验证码是否正确(只验证最新的4位验证码)"""
|
||||||
|
conn = get_db_connection()
|
||||||
|
if conn:
|
||||||
|
try:
|
||||||
|
cursor = conn.cursor()
|
||||||
|
# 只查询最新的验证码(确保是4位的)
|
||||||
|
cursor.execute("""
|
||||||
|
SELECT code FROM captcha
|
||||||
|
WHERE LENGTH(code) = 4 -- 只查询4位验证码
|
||||||
|
ORDER BY created_at DESC
|
||||||
|
LIMIT 1
|
||||||
|
""")
|
||||||
|
result = cursor.fetchone()
|
||||||
|
if result and user_input.upper() == result[0]:
|
||||||
|
# 验证成功后删除已使用的验证码
|
||||||
|
cursor.execute("DELETE FROM captcha WHERE code = %s", (result[0],))
|
||||||
|
conn.commit()
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
except Error as e:
|
||||||
|
print(f"Database error: {e}")
|
||||||
|
return False
|
||||||
|
finally:
|
||||||
|
if conn.is_connected():
|
||||||
|
cursor.close()
|
||||||
|
conn.close()
|
||||||
|
return False
|
||||||
|
|
||||||
def validate_name(name, max_length=64):
|
def validate_name(name, max_length=64):
|
||||||
"""
|
"""
|
||||||
校验名称是否符合规范
|
校验名称是否符合规范
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user