【问题标题】:$_GET contains URL string, and the actual query params are emptied -- Codeigniter$_GET 包含 URL 字符串,实际查询参数被清空 -- Codeigniter
【发布时间】:2015-07-21 23:15:27
【问题描述】:

我一直在开发一个以前由我无法联系到的人构建/工作的网络应用程序。

我相信我们目前使用的是 CI_VERSION 1.7.0。

我已经确保 enable_query / allow_get_array 配置变量都是真的。 我可以在标题中看到正确的值(查询字符串参数)。

以下问题示例:

//E.g.
//URL: http://www.fakeURL.com/something/stuff?color=blue&gender=boy

var_dump($_GET);
// array(1) { '/something/stuff' => string(0) "" } 

【问题讨论】:

  • 也许$_GET 变量在其他地方被覆盖了?
  • @GuyT 我认为你是对的,这就是我的想法,但我仍然搜索了代码库,似乎找不到这样的事情发生。
  • 它应该可以工作。你确定something是你的控制器名称和stuff你的方法名称吗?

标签: php codeigniter get superglobals


【解决方案1】:

尝试使用内置类获取 url 参数:输入。

$p = $this->input->get();
var_dump($p);

Codeigniter 建议这样做。例如,您不能使用此函数两次获取参数,因为它第二次被清空。所以我们不知道他们是如何管理参数的。

【讨论】:

    【解决方案2】:

    在 CI 的早期版本中,$_GET 数组包含 URL 被重写后请求的控制器/方法(详见this answer),其中的其余信息存储在输入类中并被删除(参见legacy docs)。

    正如另一个答案所述,您需要使用 $this->input->get(); ,它将包含原始的 $_GET 参数。

    【讨论】:

    • 我已经多次尝试输入类——但我会调查你所说的。感谢您的回复。
    • 啊,好吧,当你var_dump($this->input->get());时会发生什么可能值得更新你的问题?
    • 我找到了一些解决方法并将其发布为对此的回复。但要回答你的问题,那是错误的。
    【解决方案3】:

    我最终使用了这个解决方案,在这里找到:https://stackoverflow.com/a/2283881/1626354

    我会说这更像是一种“变通办法”,而不是一种解决方案,但我现在不能在这方面投入更多时间。

    感谢大家的有用建议。希望有一天这对其他人也有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-14
      • 1970-01-01
      • 1970-01-01
      • 2011-09-28
      • 1970-01-01
      • 2013-10-19
      • 1970-01-01
      • 2016-02-08
      相关资源
      最近更新 更多