PHP防止post重复提交数据的简单例子
在编程的江湖里,我们时常会遇到一个问题:如何处理post提交重复的问题。有一次,在帝国面试时,我遇到了这个问题。后来,我和暖阳交流时,他提到了使用时间戳记录的方法。虽然我没有完全理解他的思路,但我有一个自己的解决方案。
我的方法是使用PHP的session来记录数据。在表单页面,我们记录下某个标识(比如时间戳),然后当用户提交表单时,我们在服务器端判断这个标识是否存在并且是否与提交的数据匹配。如果匹配,我们就认为这是一次成功的提交,并清空session中的标识。如果不匹配,我们就引导用户重新提交或者跳转到其他页面。
那么,如果表单页面是html的怎么办呢?我们可以使用PHP生成一个隐藏的input字段,将标识值嵌入其中。这样,用户在提交表单时,这个标识就会一同被提交到服务器端。以下是我用PHP写的一个简单示例:
首先是我们的PHP代码部分:
```php
// 如果收到提交动作并且标识存在
if(isset($_GET['action']) && $_GET['action'] === 'save'){
// 检查session中的标识与提交的标识是否一致
if(isset($_SESSION['__open_auth']) && isset($_POST['auth']) && $_SESSION['__open_auth'] == $_POST['auth']){
print_r($_POST); // 输出提交的数据
$_SESSION['__open_auth'] = null; // 清空session中的标识
} else {
// 引导用户重新提交或跳转到其他页面
header("location: post.php");
exit();
}
}
// 生成并设置授权标识到session中
$auth = $_SESSION['__open_auth'] = time();
?>
```
接着是我们的HTML表单部分:
```html
``` 这样一来,我们就可以有效地防止post重复提交了。希望这个例子能对你有所帮助。如果有其他疑问或者需要进一步的讨论,欢迎随时与我交流。
编程语言
- PHP防止post重复提交数据的简单例子
- thinkPHP多语言切换设置方法详解
- php使用curl模拟登录后采集页面的例子
- PHP读取大文件末尾N行的高效方法推荐
- 解析PHP之提取多维数组指定列的方法
- JavaScript jquery及AJAX小结
- PHP生成器功能与用法实例分析
- 基于PHP实现栈数据结构和括号匹配算法示例
- JavaScript随机生成颜色的方法
- PHP 5.5 创建和验证哈希最简单的方法详解
- php多文件上传下载示例分享
- vue内置组件transition简单原理图文详解(小结)
- php倒计时出现-0情况的解决方法
- php inc文件使用的风险和注意事项
- Joomla调用系统自带编辑器的实现方法
- vue移动端html5页面根据屏幕适配的四种解决方法