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

PHP中如何用Session ID替换文件名固定数字读取TXT文件

解决PHP中用Session ID替换文件名后缀的问题

你之前的问题出在误用了session_id()函数——这个函数返回的是PHP默认生成的会话ID字符串,而你实际需要的是存在$_SESSION["id"]里的自定义会话ID值。

直接替换文件名变量的写法即可,同时建议增加文件存在性检查,避免因文件不存在引发报错:

<?php
// Initialize the session
session_start();

// Check if the user is logged in, if not then redirect him to login page
if(!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true){
    header("location: login.php");
    exit;
}

// 使用$_SESSION["id"]构建文件名
$filename = 'challenge-' . $_SESSION["id"] . '.txt';
// 增加文件存在性检查
if (!file_exists($filename)) {
    $current = 0; // 可根据需求设置默认值
} else {
    $handle = fopen($filename, 'r');
    $current = fread($handle, filesize($filename));
    fclose($handle);
}
?> 

<p class="details"><?php echo 'You have <strong>'.$current.'</strong> coins saved!'; ?></p>

关键修改说明:

  • 替换$filename的赋值逻辑,直接拼接$_SESSION["id"]而非调用session_id()
  • 增加file_exists()检查,防止文件不存在时fopen和filesize抛出错误
  • 如果$_SESSION["id"]可能包含非法文件名字符,建议提前过滤,比如用preg_replace('/[^\w\-.]/', '', $_SESSION["id"])移除危险字符

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 11:35:58