php 数据重复提交,php中防止重复提交数据程序代码
时间: 2023-09-09 14:14:30 浏览: 43
在 PHP 中防止重复提交数据的常见方法是使用 token 防止 CSRF 攻击和使用 session 防止表单重复提交。
使用 token 防止 CSRF 攻击:
1. 在表单中添加一个隐藏的 input 标签,值为一个随机生成的 token。
```html
<form method="post" action="submit.php">
<input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
<!-- 其他表单元素 -->
<input type="submit" value="提交">
</form>
```
2. 在服务器端验证 token 是否有效,如果有效则处理表单数据,否则提示错误信息。
```php
session_start();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if ($_POST['token'] === $_SESSION['token']) {
// 处理表单数据
// ...
// 重定向到另一个页面
header('Location: success.php');
exit();
} else {
// token 无效,提示错误信息
echo 'Invalid token';
}
}
```
使用 session 防止表单重复提交:
1. 在提交表单时,将表单数据存储到 session 中。
```php
session_start();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$_SESSION['data'] = $_POST;
// 重定向到另一个页面
header('Location: submit.php');
exit();
}
```
2. 在处理表单数据时,检查 session 中是否包含表单数据,如果包含则处理表单数据并删除 session 中的数据,否则提示错误信息。
```php
session_start();
if (!empty($_SESSION['data'])) {
// 处理表单数据
// ...
// 删除 session 中的数据
unset($_SESSION['data']);
// 重定向到另一个页面
header('Location: success.php');
exit();
} else {
// session 中无数据,提示错误信息
echo 'No data submitted';
}
```