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

PHP使用header重定向后$_SESSION变量丢失问题排查求助

问题排查及修复方案

核心问题

当前代码仅完成了表单数据的校验逻辑,并未将需要跨页传递的表单值写入$_SESSION超全局数组,因此重定向后自然无法读取到对应的session变量。

修复步骤

1. 新增session写入逻辑

在校验通过、跳转前将需要保留的表单数据写入session,修改代码如下:

if(isset($_POST['next'])){        
    if ($fnameErr == "" && $lnameErr == "" && $ssnErr == "" && $dofbErr == "" && $occpErr == "" && $filstatErr == "") {
        // 新增:将表单数据存入session
        $_SESSION['fname'] = $fname;
        $_SESSION['mname'] = $mname;
        $_SESSION['lname'] = $lname;
        $_SESSION['ssn'] = $ssn;
        $_SESSION['dofb'] = $dofb;
        $_SESSION['occp'] = $occp;
        $_SESSION['filstat'] = $filstat;

        session_write_close();
        // 建议统一Location首字母大写,避免部分环境大小写敏感导致异常
        header("Location: nextPage.php");
        exit();
    }
}

2. 检查跳转目标页配置

nextPage.php文件头部必须先配置完全一致的session存储路径,再启动session,才能读取到写入的值:

<?php
// 必须和当前页的session_save_path配置完全一致
session_save_path('/home/myHome/cgi-bin/tmp');
session_start();

// 读取示例:echo $_SESSION['fname'];
?>

其他可能的异常排查点

  • 确认/home/myHome/cgi-bin/tmp目录真实存在,且PHP运行进程对该目录拥有读写权限,权限不足会导致session文件写入失败
  • 检查php.ini配置中session.use_cookies参数是否为开启状态,默认值为On,若关闭会导致sessionID无法通过cookie传递,跳转后会生成全新的空session
  • 确保所有用到session的页面,session_start()调用前没有任何输出(包括空格、HTML标签、UTF-8 BOM头)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 01:42:03