php表单提交判断重复数据库,php – 防止重复的表单提交

我想出了一种防止重复提交表单的技术,方法是返回/转发或刷新页面.而且我也想过这里,我已经测试了一个不在生产环境中的样品,你能识别出什么缺陷?

请注意,我很清楚使用表单令牌,这将保护您免受CSRF攻击,并没有在以下步骤中添加.

– 为每个表单生成表单ID,并将其用作以下形式的隐藏字段:

$formid = microtime(true)*10000;

– 表单提交:

>从数据验证

>计算表单域数据的哈希值

$allvals = '';

foreach($_POST as $k=>$v){

$allvals .= $v;

}

$formHash = sha1($allvals);

>通过与先前保存的哈希进行比较来验证表单哈希.会话值通过$formid变量绑定到每个窗体.

$allowAction = true;

if(isset($_SESSION['formHash'][$_POST['formid']]) && ($_SESSION['formHash'][$_POST['formid']] == $formHash)){

$allowAction = false;

}

>如果没有找到表单哈希,这意味着这是第一次提交表单或更改表单数据.

>如果数据保存(例如数据库),将表单哈希保存到会话中:

$_SESSION['formHash'][$_POST['formid']] = $formHash;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值