如何使表单提交的变量在网站所有页面中显示?
嘿,这个问题很常见——因为$_POST变量的生命周期只限于表单提交的那一次请求,请求结束后它就被销毁了,所以其他页面自然拿不到。要让这个追踪号在全站所有页面都能访问,你需要用PHP的**会话(Session)**来存储它,具体步骤如下:
解决方案:使用PHP会话共享变量
第一步:在所有需要访问变量的页面启动会话
不管是tracking.php还是其他要显示这个追踪号的页面,都必须在页面的最顶部(任何HTML输出之前,包括空格、换行)加上这段代码:<?php session_start(); // 启动会话,必须放在最开头 ?>注意:如果页面已经有PHP代码块,就把
session_start();放在那个代码块的第一行,确保没有任何输出(比如<html>标签、空格)在它之前,否则会触发报错。第二步:在tracking.php中存储变量到会话
当表单提交到tracking.php后,把POST过来的追踪号存入$_SESSION数组里,这样它就会被保存到服务器端的会话中,直到会话结束或者你主动销毁它。代码可以这么写:<?php session_start(); // 先判断是否有POST数据,避免未提交表单时报错 if(isset($_POST['trckno_trk'])) { $_SESSION['tracking_number'] = $_POST['trckno_trk']; } // 原来的输出代码可以保留,或者改成从session读取 if(isset($_SESSION['tracking_number'])) { echo $_SESSION['tracking_number']; } ?>第三步:在其他页面读取会话变量
在任意其他页面,只要先启动会话,就能直接读取这个变量了:<?php session_start(); // 先检查变量是否存在,防止未设置时出现Notice错误 if(isset($_SESSION['tracking_number'])) { echo "当前追踪号:" . $_SESSION['tracking_number']; } else { echo "没有找到追踪号"; } ?>
额外注意事项
- 会话默认会在用户关闭浏览器后自动结束,如果你想提前销毁这个变量,可以用
unset($_SESSION['tracking_number']);;如果要销毁整个会话(清除所有会话变量),用session_destroy();。 - 确保你的服务器支持PHP会话功能,一般默认都是开启的,如果遇到问题可以检查
php.ini中的session.save_path配置是否正确。
内容的提问来源于stack exchange,提问作者kc melec
相关产品推荐
相关产品推荐

