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
相关产品推荐
相关产品推荐

