PHP 避免浏览器在页面刷新时重新发布 $_POST?

2024-04-20

我想知道我可以使用哪些技术来避免用户在刷新页面并再次选择提交时两次发布表单?

例如我里面有表格注册.php并在内部处理它注册.php。

1st我可以在另一个文件中处理,例如注册进程.php并重定向到 register.php,但随后我必须创建大约 20 个新页面并重新定位大量代码,我不想要这个选项。

2nd我可以玩headers我不记得确切的技巧,但有一些不好的经历 - 用户刷新后在页面上看到旧数据......

3rd我可以在成功后重定向到某些虚拟.php和来自虚拟.php跳回到注册.php那么即使他们刷新页面浏览器也不会重新发布,但是它不能防止他们使用返回键并选择重新发布,我知道我的页面可能会过期,但我发现对我和其他用户来说看到页面过期错误的烦人经历。

4th一旦页面加载,每个表单都会使用一些唯一的“访问密钥”,该密钥将与表单一起发布,并且一旦使用就无法重复使用,但是我对该功能的逻辑有点挣扎。如何知道密钥已被使用而不将其存储在 MySQL DB 中,我认为基于时间的访问也不是很好,因为某些用户在页面打开和表单提交之间可能需要很长时间。

我需要更多建议如何避免用户再次重新提交表单。


尝试这个:

<?php
session_start();
if( strcasecmp($_SERVER['REQUEST_METHOD'],"POST") === 0) {
  $_SESSION['postdata'] = $_POST;
  header("Location: ".$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING']);
  exit;
}
if( isset($_SESSION['postdata'])) {
  $_POST = $_SESSION['postdata'];
  unset($_SESSION['postdata']);
}

这基本上会保存 POST 数据并导致浏览器重新请求为 GET 请求。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 避免浏览器在页面刷新时重新发布 $_POST? 的相关文章

  • 如何在 div 标签上添加带边框的三角形

    我有一个 div 标签 我想在它上面添加一个小三角形 注意 我希望我的 div 标签具有某种颜色的边框 以及另一种颜色的 div 主体 假设我的 div 背景为白色 边框为蓝色 请看这个 http fiddle jshell net pau
  • 如何设置 HTML5 表单验证消息的样式? [复制]

    这个问题在这里已经有答案了 我正在使用 必需 的 HTML5 验证 但气泡消息正在我的屏幕中创建滚动条 因为输入字段尺寸很小并且位于右侧 所以我想更改气泡消息以显示输入字段的左侧或更改其样式 HTML5 表单
  • 使用 javascript 获取选择标签的名称

    我在任何地方都没有找到这个问题 所以我将其发布在这里 我有一堆选择标签 部分使用 VBScript 命名 我希望能够获取从 javascript 中的 onchange 事件调用的选择标签的名称 这是代码
  • jquery $('id').text 带粗体

    我有一个 jquery 可以更改链接的文本 如下所示 if urlfind gt 0 linkurl text More info 和 HTML a href a 我试图为此链接添加粗体 但添加 b More Info b 让它们在文本本身
  • 在 div 内对齐 2 个图像,一张向右,另一张向左

    我的网页中有 2 张图片 我希望一张图像左对齐 另一张图像右端对齐 The JsFiddle http jsfiddle net NbekW 这是我的 HTML div class header img src Home files ima
  • 针对较小屏幕的拆分表行

    我有一个固定宽度为 960px 有 5 列的表格 当我在移动设备中查看时 我想制作第 3 4 5 列 看起来就像在下一行 有什么方法可以让 CSS 打断一行 使其看起来像这样 但是 还保留原来的HTML代码吗 您可以使用 FlexBox f
  • 统计并限制上传的文件数量(HTML文件输入)

    我有那个基本的 众所周知的多文件上传表单 类似的事情
  • 如何暂时停止标题属性显示工具提示?

    我在右键单击时显示了一个弹出 div 我知道这会破坏预期的功能 但 Google 文档会这样做 所以为什么不呢 但是 我在弹出窗口上显示的元素有一个 标题 属性集 该属性集出现在我的分区 我仍然希望工具提示能够工作 但当弹出窗口出现时就不行
  • HTML Canvas:如何绘制翻转/镜像图像?

    当我在 HTML 画布上绘制图像时 我试图翻转 镜像图像 我发现一个游戏教程显示了角色必须面对的每个方向的精灵表 但这对我来说似乎不太正确 特别是因为每个框架都有不同的尺寸 实现这一目标的最佳技术是什么 我尝试致电setScale 1 1
  • 自定义 github 页面的预览图像

    是否可以自定义在将链接发布到 github 页面时看到的预览图像 我觉得他们专门解决了 github 存储库的问题here https docs github com en github administering a repository
  • 如何在禁用按钮上启用 Bootstrap 工具提示?

    我需要在禁用的按钮上显示工具提示 并在启用的按钮上删除它 目前 它的工作原理是相反的 扭转这种行为的最佳方法是什么 rel tooltip tooltip
  • 在 HTML 页面中显示代码片段

    就像 stackoverflow 的 WYSIWYG 文本编辑器中有一个代码示例插入器一样 参见此处的图片 http img72 imageshack us img72 8241 codesample png 我想要这样的格式化程序在 ht
  • 媒体查询:根据屏幕尺寸限制一些CSS样式

    当我在layout css中编写一些样式时 它适用于每个屏幕尺寸和 Media Queries 部分 您有以下部分 Smaller than standard 960 devices and browsers Tablet Portrait
  • HTML/PHP if-else 语句

    我正在使用 Bootstrap 创建一个网站 我想输入 if else 语句 但我不知道该怎么做 让我解释 Here is an image of my current HTML snippet 现在我想要的是 如果我通过 An Aussc
  • 打开图层地图,经纬度获取地址

    我正在尝试获取带有经度和纬度的地址 城市 邮政编码 街道地址 但我不知道如何获取 我正在使用开放图层 当我单击地图的一部分时 会获取该位置的经度和纬度 有人有解决方案吗 div class map div
  • 如何将 !important 添加到 CSS-in-JS (JSS) 类属性?

    我正在尝试使用一些 CSS in JS 类这个答案 https stackoverflow com questions 54525334 how can i change the label size of a material ui te
  • 有没有办法在 Blazor 中隐藏 div?

    我正在使用 Blazor 并且想在按下导航栏切换器图标时隐藏侧边栏 列表项崩溃了 但问题是 div 仍然存在 div class page div class sidebar div class nav top row pl 4 navba
  • html5 canvas贝塞尔曲线获取所有点

    我喜欢从贝塞尔曲线中得到一些点 我发现 在javascript中查找三次贝塞尔曲线的所有点 https stackoverflow com questions 15397596 find all the points of a cubic
  • iOS中如何以url的形式发布数据?

    我想将 UITextfields 数据发送到服务器 我想发布数据 但服务器向我显示错误消息 请检查我的代码 NSURL url NSURL URLWithString http projectsatseoxperts net au fish
  • @media查询和图像交换[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我希望在调整浏览器大小时网站中的图像完全改变 我一直在使用媒体查询 但我似乎无法正确使用它 有什么想法 建议吗 将来请添加您尝试过的代

随机推荐