PHP 变量被视为空,除非它被回显

标签 php

我在名为index.php 的页面上定义了一个变量$location,然后在名为loginManager.php 的脚本中设置 header 时使用它。如果我只是使用 $location PHP 坚持认为它是空的。但是,如果我在页面上的任何位置回显该变量,它将识别该变量的内容。

相关代码如下:

index.php:

$location = $_SERVER['REQUEST_URI'];
require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/loginManager.php");

登录管理器.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 会有这样的行为吗?

编辑: 当我不在页面上的某个地方回显 $location 时,我将详细说明如何知道 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: @jx12345 指出,并不是 $location 特别需要回显,只是需要回显某些内容才能读取 $location。

最佳答案

我认为您的问题可能是重定向循环。我敢打赌 $_POST['caller'] 为空,并且您多次重定向到 /,然后将 REQUEST_URI 设置为空白。

关于PHP 变量被视为空,除非它被回显,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18003112/

相关文章:

php - FOSRestBundle 设置返回 JSON 但仍然要求 Twig 模板

php - 如何从 simplesamlphp 注销

php - 有什么东西不见了吗?在不刷新\重新加载页面的情况下更改\更新页面内容

php - 为什么要在 curl 中关闭 header ?

php - Symfony 2.8 Autowiring 方法注入(inject)

php - Paypal 支付 REST API - REQUIRED_SCOPE_MISSING

javascript - 使用 JavaScript 和 AJAX 从 HTML 输入标记检索图像并将其传递给 PHP 脚本以上传到数据库

php - .po 到 .mo 在 php 中的转换?

PHP 从 SFTP 下载文件

php - 我应该在表单中使用 mysql 枚举作为动态下拉列表吗?