我在名为index.php的页面上定义了一个变量$ location,然后在我在名为loginManager.php的脚本中设置标头时使用它。如果我只是使用$ location PHP坚持认为它是空的。但是,如果我在页面的任何位置回显变量,它将识别变量的内容。
以下是相关代码:
的index.php:
$location = $_SERVER['REQUEST_URI'];
require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/loginManager.php");
loginManager.php:
header("Location: http://www.example.com/?location=$location");
echo $location;//Adding this line allows PHP to read the contents of $location.
//If this line is commented out PHP treats it as if it were empty.
在loginManager.php上运行的代码不在函数或任何会导致$ location的作用域问题的程序中。有谁知道为什么PHP会以这种方式运行?
编辑: 我将扩展我如何知道PHP认为$ location是空的,当我不在页面的某个地方回显它。
如果我这样做:
If(empty($location))
echo "location is empty";
else
print "location is not empty";
PHP将打印出“位置为空”。
但是,如果我做这样的事情
echo $location;
If(empty($location))
echo "location is empty";
else
print "location is not empty";
PHP将打印出“位置不为空”。我回调$ location的地方似乎并不重要。
编辑#2:编辑#2: @ jx12345指出,它不是特定的$ location需要回应,只需要回显一些东西,以便读取$ location。答案 0 :(得分:1)
我认为您的问题可能是重定向循环。我打赌$_POST['caller']
为空,您将多次重定向到/
,然后将REQUEST_URI设置为空白。
答案 1 :(得分:1)
你有没有发生某种奇怪的循环:
index.php加载“/lib/loginManager.php”
使用:
重定向回index.phpheader("Location: http://www.example.com/?location=$location");
echo只会破坏重定向
尝试重定向到其他地方,比如test.php
header("Location: http://www.test.co.uk/test.php?location=$location");
并且在那里有类似的东西:
print_r($_REQUEST);
看看会发生什么
答案 2 :(得分:0)
尝试添加
global $location;
在loginManager.php的顶部附近,如果存在应该处理的可变范围问题。