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

