如何实现PHP将Cookie数据追加写入CSV排行榜并添加表头?
解决CSV排行榜数据覆盖问题的修改方案
核心修改点:
- 将文件打开模式从写入模式("w")改为追加模式("a"),避免覆盖原有数据
- 新增表头判断逻辑,仅在文件为空时写入
Username,Score首行 - 可选:添加Cookie存在性校验,防止空数据写入
修改后的完整代码:
<?php session_start(); // 校验Cookie是否存在,避免空数据 if(isset($_COOKIE['usernamecookie']) && isset($_COOKIE['scoreCookieToPost'])){ $username = $_COOKIE['usernamecookie']; $score = $_COOKIE['scoreCookieToPost']; $leaderboard_data = [$username, $score]; // 打开文件,使用追加模式("a") $file = fopen("leaderboarddata.csv", "a"); // 判断文件是否为空,为空则先写入表头 if(file_exists("leaderboarddata.csv") && filesize("leaderboarddata.csv") == 0){ fputcsv($file, ['Username', 'Score']); } // 写入用户数据到新行 fputcsv($file, $leaderboard_data); fclose($file); } ?>
关键改动说明:
- 文件模式修改:
"a"模式会将新数据追加到文件末尾,而"w"模式会清空原有内容再写入,这是解决覆盖问题的核心。 - 表头逻辑:通过
filesize()判断文件是否为空,确保只有首次写入时添加表头,避免重复写入。 - Cookie校验:用
isset()检查Cookie是否存在,防止因Cookie未设置导致的空值或报错。
内容的提问来源于stack exchange,提问作者Ad270
相关产品推荐
相关产品推荐

