我正在制作一个脚本,其中在加载模板时使用随机数作为验证码,它会创建一个数字,但是在发出后期请求并将输入的值与验证码进行比较后,数字会发生变化
请注意,这不是用于生产,这是一个测试项目
from flask import Flask,render_template,request
import random
app = Flask(__name__)
@app.route('/',methods=['GET', 'POST'])
def index():
random_number = random.randint(100, 13337)
print(random_number,"before POST")
if request.method == 'POST':
message = request.form['message']
captcha=request.form['captcha']
print(captcha,"after POST")
if captcha == random_number:
return '''<script>alert("Thank you ")</script>'''
print(x)
return render_template('index.html',random_number=random_number)
if __name__ == '__main__':
app.run(debug=True)
index.html
<form method="POST">
<div class="form-group">
<label for="exampleInputPassword1">Message</label>
<textarea type="text" class="form-control" id="exampleInputPassword1" placeholder="message" name="message"></textarea>
</div>
<div class="group">
<label class="form-check-label" for="exampleCheck1">Verify that You are a human </label>
<br>
<label class="captcha" for="exampleCheck1">{{ random_number }}</label>
<div class="md-form form-group w-25">
<input type="text" class="form-control" name="captcha" placeholder="Enter Captcha">
</div>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
答案 0 :(得分:1)
您将必须在会话或数据库中保留以前的随机数,就像在每个请求中生成新的随机数一样。 保留旧的随机数,那么只有您可以对照您的保留值来验证您的验证码值。
顺便说一句,我建议您不要使用一些流行的验证码验证库,例如https://pypi.org/project/flask-session-captcha/
,而不是从头开始创建。