• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php 如何避免程序重复执行

php 搞代码 4年前 (2022-01-25) 15次浏览 已收录 0个评论
文章目录[隐藏]

如往数据库 中插入一条数据成功后跳转到下一个页面后 然后返回 又插入了一条 怎么避免

回复内容:

如往数据库 中插入一条数据成功后跳转到下一个页面后 然后返回 又插入了一条 怎么避免

<code>//表单页面<?php    session_start();   $token = md5(uniqid());  //生成一个随机token, 直接用php的函数, 也可以自己另外实现   $_SESSION['token'] = $token;?>    "    //code//提交页面session_start();if (!isset($_SESSION['token']) || $_POST['token'] != $_SESSION['token']) {    die('重复提交');}unset($_SESSION['token']);//code..</code>

那就在你的POST表单里加个一次性“凭证”呗,凭证由生成表单页面的逻辑签发,存入缓存;然后在接受POST的逻辑里检查凭证的有效性,有效则执行保存写入数据库,并清理掉这个凭证;
1.第一次请求,凭证未超时且有效,通过。
2.返回请求地址,实际是POST了一模一样的数据过去,但凭证已经被第一次清理,会检测到凭证失效。
3.多次被模拟(恶意)POST请求,凭证为前后关联,且具有时效性和一次性特点,也不会执行保存数据。

试试看,苦海无边,望君保重 – -!

添加一个时间戳凭证,读取后比对当前时间,多少秒内不反复入库。

设置一个global flag(true /false) ,然后用if 来判定这个flag 再插入。

或者提交后禁止返回

来@源gao*daima.com搞@代#码网搞gaodaima代码

表单每次生成一个唯一且变化的token,同时生成对应的session,然后提交的时候,校验这个token。当插入数据库成功后,就清空这个session。即使重复点击,token也失效了!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php 如何避免程序重复执行

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址