发出发布请求之前更改随机数

时间:2019-07-24 07:27:09

标签: python python-3.x flask

我正在制作一个脚本,其中在加载模板时使用随机数作为验证码,它会创建一个数字,但是在发出后期请求并将输入的值与验证码进行比较后,数字会发生变化

请注意,这不是用于生产,这是一个测试项目

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>

1 个答案:

答案 0 :(得分:1)

您将必须在会话或数据库中保留以前的随机数,就像在每个请求中生成新的随机数一样。 保留旧的随机数,那么只有您可以对照您的保留值来验证您的验证码值。

顺便说一句,我建议您不要使用一些流行的验证码验证库,例如https://pypi.org/project/flask-session-captcha/

,而不是从头开始创建。