PHP防止post重复提交数据的简单例子

网络编程 2025-03-28 22:48www.168986.cn编程入门

在编程的江湖里,我们时常会遇到一个问题:如何处理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提交示例

``` 这样一来,我们就可以有效地防止post重复提交了。希望这个例子能对你有所帮助。如果有其他疑问或者需要进一步的讨论,欢迎随时与我交流。

上一篇:thinkPHP多语言切换设置方法详解 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by