【问题标题】:$_GET and $_REQUEST are empty, but only sometimes?$_GET 和 $_REQUEST 是空的,但只是有时?
【发布时间】:2017-02-02 01:14:56
【问题描述】:

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

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

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

环境信息:

  • PHP 5.3
  • 阿帕奇 2
  • 红帽 Linux

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

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

【问题讨论】:

  • 您从哪里获得 $_GET?我的意思是, $_GET 很笼统,您没有定义 $_GET 您要输出的参数。比如,你是否试图从这样的网址中获取类似“用户”的信息:mywebsite.com/index.php?user=130252
  • 我看不出 $_GET 与会话有什么关系,再说一次,我不使用会话。但是,我知道 $_GET 与 url 中的内容有关。
  • 这只是浏览器缓存问题吗? CTRL+F5 清空缓存。或者大多数浏览器都有关闭缓存的机制,这在测试你正在开发的脚本时是个好主意
  • 谢谢大家。 TBH,我不完全确定为什么 session 是相关的,但这是其他帖子中的常见回复,我想消除这个变量。

标签: php apache http


【解决方案1】:

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

【讨论】:

  • 谢谢。当我测试 $_REQUEST 时,我得到了相同的空数组。对不起,我写了我在帖子标题中测试了 $_REQUEST,但没有在代码中说明
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多