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

为什么PHP第一个页面的Session数据无法传递到第二个页面?

问题原因

  • Session1.php逻辑错误:你为每个表单字段单独写了判断跳转逻辑,代码执行到第一个满足条件的判断时就会直接跳转,剩余字段还没存入Session就已经结束了当前页面逻辑,导致绝大多数数据没有存储成功。同时跳转后没有加exit终止代码执行,可能引发异常。
  • Session2.php输出位置错误:所有Session数据的输出逻辑写在了<html>标签之外,浏览器不会渲染HTML结构外的内容,哪怕Session有值也不会展示在页面上。

修正方案

1. 修改Session1.php逻辑

将所有字段的存储逻辑合并,全部字段处理完成后再跳转,跳转后添加exit终止执行,修正后代码如下:

<?php
session_start();

// 表单提交后统一处理所有字段,全部存完再跳转
if (!empty($_POST)) {
    $_SESSION["employeeName"] = $_POST["employeeNameBox"] ?? '';
    $_SESSION["employeeid"] = $_POST["employeeidBox"] ?? '';
    $_SESSION["phoneNumber"] = $_POST["phoneNumberBox"] ?? '';
    $_SESSION["email"] = $_POST["emailBox"] ?? '';
    $_SESSION["position"] = $_POST["positionBox"] ?? '';
    $_SESSION["ITProject"] = $_POST["ITProjectBox"] ?? '';
    header("Location: Session2.php");
    exit; // 跳转后终止执行,避免后续代码运行
}

?>

<html>
<body>
<?php include('Header.php'); ?>
<?php include('Menu.php'); ?>
<div class="content">
    <form method="POST">
        <input type="text" name="employeeNameBox" value="Employee name"> <br> 
        <input type="text" name="employeeidBox" value="Employee id"> <br>
        <input type="text" name="phoneNumberBox" value="Phone number"> <br> 
        <input type="text" name="emailBox" value="Email"> <br> 
        
        <input type="radio" id="Manager" name="positionBox" value="Manager"> 
        <label for="Manager">Manager</label><br>
        <input type="radio" id="Team Lead" name="positionBox" value="Team Lead"> 
        <label for="Team Lead">Team Lead</label><br> 
        <input type="radio" id="IT Developer" name="positionBox" value="IT Developer"> 
        <label for="IT Developer">IT Developer</label><br>
        <input type="radio" id="IT Analyst" name="positionBox" value="IT Analyst"> 
        <label for="IT Analyst">IT Analyst</label><br><br>

        <select name="ITProjectBox">
            <option value="Project A">Project A</option>
            <option value="Project B">Project B</option>
            <option value="Project C">Project C</option>
            <option value="Project D">Project D</option>
        </select> <br><br>
        <button type="submit">Submit Information</button>
    </form>
</div>
<?php include('Footer.php'); ?>
</body>
</html>

2. 修改Session2.php输出位置

将Session数据的输出逻辑移动到页面的<div class="content"></div>区域内,保证内容能被正常渲染,修正后代码如下:

<?php
session_start();
?>
<html>
<body>
<?php include('Header.php'); ?>
<?php include('Menu.php'); ?>
<div class="content">
<?php
if(isset($_SESSION["employeeName"]))
{
    echo "<b>Employee name: </b>" .$_SESSION["employeeName"];
    echo("<br><br>");
}

if(isset($_SESSION["employeeid"]))
{
    echo("<b>Employee id: </b>" .$_SESSION["employeeid"]);
    echo("<br><br>");
}

if(isset($_SESSION["phoneNumber"]))
{
    echo("<b>Phone number: </b>" .$_SESSION["phoneNumber"]);
    echo("<br><br>");
}

if(isset($_SESSION["email"]))
{
    echo("<b>Email: </b>" . $_SESSION["email"]);
    echo("<br><br>");
}

if(isset($_SESSION["position"]))
{
    echo("<b>Position: </b>" . $_SESSION["position"]);
    echo("<br><br>");
}

if(isset($_SESSION["ITProject"]))
{
    echo("<b>IT Project: </b>" . $_SESSION["ITProject"]);
    echo("<br><br>");
}
?>
</div>
<?php include('Footer.php'); ?>
</body>
</html>

修改完成后即可正常提交展示表单数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:15:08