PHP跳转后变量未定义及页面重复问题求解
问题解决方法
1. 修复Undefined variable $QT警告
用header("location: ...")跳转属于发起新的HTTP请求,原请求里的$QT变量不会自动带到新页面,得用下面两种方式传递值:
方式一:通过URL参数传递
修改Script1.php的跳转逻辑,把$QT作为GET参数拼到跳转地址后:
<?php if ($_SERVER["REQUEST_METHOD"] === "POST" && $_POST["QT"] > 10) { $QT = $_POST["QT"]; // 用urlencode处理参数,避免特殊字符出错 header("location: Skript2.php?QT=" . urlencode($QT)); die(); } ?>
然后修改Skript2.php,直接读取GET参数,删掉include语句:
<?php // 先检查参数是否存在,防止警告 if (isset($_GET["QT"])) { echo $_GET["QT"]; } else { echo "缺少参数"; } ?>
方式二:用Session存储变量
如果要传递敏感数据或者多个值,推荐用Session:
先在Script1.php开头启动Session:
<?php session_start(); if ($_SERVER["REQUEST_METHOD"] === "POST" && $_POST["QT"] > 10) { $_SESSION["QT"] = $_POST["QT"]; header("location: Skript2.php"); die(); } ?>
然后在Skript2.php中启动Session并读取值,同样删掉include语句:
<?php session_start(); if (isset($_SESSION["QT"])) { echo $_SESSION["QT"]; // 可选:用完后清除变量,避免后续请求误用 unset($_SESSION["QT"]); } else { echo "缺少参数"; } ?>
2. 解决页面内容重复问题
你在Skript2.php里include "Skript1.php"会执行Script1的所有代码(包括里面的HTML内容),相当于把Script1的页面内容又复制了一遍,直接删掉这个include语句就能解决。另外两个脚本都在main文件夹下,跳转地址不用加../main/,直接写Skript2.php就行。
内容的提问来源于stack exchange,提问作者Theo Meyer
相关产品推荐
相关产品推荐

