$ _GET和$ _REQUEST是空的,但有时只是?

时间:2017-02-02 01:14:57

标签: php apache http

我有一个非常简单的page.php,它应该显示所有的URL参数。 (我在一个更复杂的页面中遇到了这个问题,但只将其剥离到了这个测试,问题仍然存在)

<?php
if (!isset($_SESSION)) { 
    session_start(); 
}
print_r($_GET);
?>

当我直接导航到page.php?someProperty = testing时,我有时得到一个空数组(),然后在第二次尝试时按预期工作,以及每次后续尝试。在离开一段时间后,我第一次从服务器发出请求似乎总是失败。我开始认为这是一个较低的水平。调试非常困难,因为只要我观察它就会消失。什么可能导致这个?

环境信息:

  • PHP 5.3
  • Apache 2
  • Redhat Linux

PS - 我读过其他类似的帖子,但在每种情况下,有人忘记初始化会话或其他什么。我还确保在初始化会话之前没有设置空格或标题

更新 - 当页面无法读取URL参数时,浏览器也会立即从位置栏中删除查询字符串,将其减少到domain.com/page.php
即使我手动输入page.php?test = test的完整地址到URL栏,它也会立即缩短,页面会输出一个空白数组。此外,没有在Apache

中启用的任何类型的重写

2 个答案:

答案 0 :(得分:0)

仅出于测试目的,还请包含print_r($_REQUEST);之类的内容并检查其输出。

答案 1 :(得分:0)

为什么session_start在$ _SESSION的if isset中? 在会话启动之前,您无法读取$ _SESSION。 也许这会导致你的问题。 您的代码应以session_start

开头
<?php
    session_start(); 
    if (!isset($_SESSION)) { 
        // Do something
    }
    print_r($_GET);
?>