扫码关注官方订阅号
如题,在不使用验证码的情况下!
学习是最好的投资!
后端生成token,保存数据前验证
楼上说得都很好了,补充下,除了使用token进行校验外,还可以使用POST-Redirect-GET(PRG)的方式——最后呈现给用户的是一个GET的页面,即使用户按F5刷新页面也不会导致重复提交表单。
参考一下:表单令牌
PHP生成表单时设置一个token隐藏域,提交后JS则可以辅助把提交按钮设为不可点击. 提交表单时进行验证,相同则写入数据库并生成新的token. token生成算法,比如:
$token = sha1(uniqid(mt_rand(), true));
uniqid获取一个带前缀(mt_rand),末尾带熵(true),基于当前时间微秒数的唯一编号.mt_rand用于生成更好的随机数.
作为一名Python程序猿,使用Django框架时,直接在模板里面,在
里面直接加上{% csrf_token %}
在第一次提交之后设置一定时间才能提交第二次,javascript里面有一个叫做debounce的可以应用到你得场景, 你可以把你提交的动作放到debounce里面,例如:
'use strict'; var debounce = function(func, timeout) { var timer; return function() { var _this = this; var args = Array.prototype.slice.call(arguments); clearTimeout(timer); timer = setTimeout(function() { func.apply(_this, args); }, timeout); }; };
这样当你再调用post的提交方法submit()的时候,
var debounced = debounce(submit, 100); debounced(); debounced(); debounced(); debounced();
它只会提交一次。
1、header地址重定向 2、JS跳转其他页面 3、设置Token并验证
做一个令牌吧,当正在处理数据时,令牌为false,不能提交;当无数据处理时,令牌为true,提交处理数据。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
后端生成token,保存数据前验证
楼上说得都很好了,补充下,除了使用token进行校验外,还可以使用POST-Redirect-GET(PRG)的方式——最后呈现给用户的是一个GET的页面,即使用户按F5刷新页面也不会导致重复提交表单。
参考一下:表单令牌
PHP生成表单时设置一个token隐藏域,提交后JS则可以辅助把提交按钮设为不可点击.
提交表单时进行验证,相同则写入数据库并生成新的token.
token生成算法,比如:
uniqid获取一个带前缀(mt_rand),末尾带熵(true),基于当前时间微秒数的唯一编号.mt_rand用于生成更好的随机数.
作为一名Python程序猿,使用Django框架时,直接在模板里面,在
里面直接加上{% csrf_token %}
在第一次提交之后设置一定时间才能提交第二次,javascript里面有一个叫做debounce的可以应用到你得场景,
你可以把你提交的动作放到debounce里面,例如:
这样当你再调用post的提交方法submit()的时候,
它只会提交一次。
1、header地址重定向
2、JS跳转其他页面
3、设置Token并验证
做一个令牌吧,当正在处理数据时,令牌为false,不能提交;当无数据处理时,令牌为true,提交处理数据。