为什么$ _GET不能运行PHP 5.3.21?

时间:2013-09-05 14:07:27

标签: php get isset

我在switch语句中使用$ _GET来确定在选择框中显示的选项。在我将服务器升级到PHP 5.3.21之前,情况非常好。现在我得到未定义的索引和未定义的变量错误消息。我修改了我的代码以包含ifset()。现在没有错误,但我不能让PHP认识到$ _GET [“menuid”}确实有一个值。

我正在尝试从以下位置获取变量的网址:

http://www.example.com/mod/page/view.php?id=5100&module=1&menuid=2&module=1&page=2

我正在使用的代码:

if (isset($_GET['menuid'])) {
    $menuid = $_GET['menuid'];
}
else {
    $menuid = "not working";
}

echo $menuid;
switch($menuid) {
    // My code
   }

结果是:

“不工作”

编辑:PHP子页面上的`var_dump($ _ GET)'的结果

array(0) { }

编辑:PHP主页上var_dump($_GET)的结果

array(4) { ["id"]=> string(4) "5100" ["module"]=> string(1) "1" ["menuid"]=> string(1) "2" ["page"]=> string(1) "2" }

上面的var_dump来自PHP主页。原始代码位于一个单独的PHP页面上,我将其包含在带有file_get_contents();的PHP主页面中。 file_get_contents()会导致此问题吗?

2 个答案:

答案 0 :(得分:1)

事实证明,file_get_contents()使$ _GET无法正常工作。我已将主PHP页面上的代码修改为require_once()。我的原始代码所在的子PHP页面的var_dump($ _ GET)现在导致了:

array(4) { ["id"]=> string(4) "5100" ["module"]=> string(1) "1" ["menuid"]=> string(1) "2" ["page"]=> string(1) "2" }

感谢@Mansfield的帮助

答案 1 :(得分:0)

您有两次定义“模块”。我认为正确的URL看起来像这样:

http://www.example.com/mod/page/view.php?id=5100&menuid=2&module=1&page=2