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

PHP页面间变量存取异常:返回首页面后表单数据未保存

解决方案:用SESSION实现跨页面数据保留

page1.php 代码实现

<?php
// 必须在页面最顶部开启SESSION,不能有任何输出(包括空格、HTML标签)在这行之前
session_start();

// 处理提交按钮:展示全部信息
if(isset($_POST['submit_all'])){
    echo "<h3>已收集的全部信息:</h3>";
    echo "姓名:" . $_SESSION['name'] . "<br>";
    echo "喜爱运动:" . $_SESSION['sport'] . "<br>";
    echo "喜爱菜品:" . (isset($_SESSION['food']) ? $_SESSION['food'] : '未填写') . "<br>";
}

// 处理姓名和运动的表单提交:存入SESSION
if(isset($_POST['save_info'])){
    $_SESSION['name'] = $_POST['name'];
    $_SESSION['sport'] = $_POST['sport'];
}
?>

<!DOCTYPE html>
<html>
<head>
    <title>Page1</title>
</head>
<body>
    <form method="post">
        <label>姓名:</label>
        <!-- 回显SESSION中已保存的姓名,没有则为空 -->
        <input type="text" name="name" value="<?php echo isset($_SESSION['name']) ? $_SESSION['name'] : ''; ?>"><br>
        
        <label>喜爱运动:</label>
        <input type="text" name="sport" value="<?php echo isset($_SESSION['sport']) ? $_SESSION['sport'] : ''; ?>"><br>
        
        <button type="submit" name="save_info">保存当前信息</button>
        <button type="submit" name="submit_all">提交并展示全部信息</button>
    </form>
    <!-- 跳转至page2.php,直接用链接即可,SESSION会保持 -->
    <button onclick="window.location.href='page2.php'">去填写喜爱菜品</button>
</body>
</html>

page2.php 代码实现

<?php
// 同样在顶部开启SESSION
session_start();

// 处理菜品表单提交:存入SESSION
if(isset($_POST['save_food'])){
    $_SESSION['food'] = $_POST['food'];
}
?>

<!DOCTYPE html>
<html>
<head>
    <title>Page2</title>
</head>
<body>
    <form method="post">
        <label>喜爱菜品:</label>
        <input type="text" name="food" value="<?php echo isset($_SESSION['food']) ? $_SESSION['food'] : ''; ?>"><br>
        
        <button type="submit" name="save_food">保存菜品信息</button>
        <button onclick="window.location.href='page1.php'">返回Page1</button>
    </form>
</body>
</html>

关键注意事项

  • 所有用到SESSION的PHP页面,必须在最顶部第一行写session_start();,不能有任何HTML输出、空格甚至空行在它之前,否则SESSION无法正常初始化。
  • 表单提交时,要把输入值主动存入$_SESSION数组,比如$_SESSION['name'] = $_POST['name'];,这样数据才会被持久化到SESSION中。
  • 回显数据时,用isset()判断SESSION中是否存在对应值,避免报错,同时把值填充到输入框的value属性里,这样返回页面后输入框会保留之前的内容。
  • 跳转页面时,直接用普通的链接或JS跳转即可,只要SESSION开启正常,数据会自动携带。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:57:15