You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何重置表单输入数据?解决PHP表单刷新重复提交CSV问题

解决CSV重复写入问题

问题根源是刷新页面时浏览器会重新发送之前的POST请求,导致重复写入CSV。以下是具体修复方案:

1. 核心解决思路:采用Post/Redirect/Get(PRG)模式

处理完POST表单数据后,立即重定向到当前页面,这样刷新时浏览器只会发送GET请求,不会重复执行写入逻辑。

2. 修正后的完整代码

<?php 
session_start();

// 仅在POST请求时处理数据
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // 安全获取POST参数,避免未定义索引报错
    $ISBN = $_POST['ISBN'] ?? '';
    $Title = $_POST['Title'] ?? '';
    $Description = $_POST['Description'] ?? '';

    // 验证字段非空
    if (!empty($ISBN) && !empty($Title) && !empty($Description)) {
        $books = fopen("Books.csv", "a");
        // 使用fputcsv自动处理CSV格式,避免手动拼接的引号/逗号错误
        fputcsv($books, [$ISBN, $Title, $Description]);
        fclose($books);
    }
    // 重定向到当前页面,阻断重复提交
    header("Location: " . $_SERVER['PHP_SELF']);
    exit();
}
?>

3. 关键优化点说明

  • 用$_SERVER['REQUEST_METHOD']判断请求类型,确保只有表单提交时才执行写入逻辑,直接访问页面不会触发操作
  • 替换手动拼接CSV字符串的方式,使用fputcsv自动处理内容中的逗号、引号等特殊字符,生成标准CSV格式
  • 重定向操作会清空POST数据,刷新页面时不会重复发送提交请求

内容的提问来源于stack exchange,提问作者Rookus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 04:54:56