当url有变量时,$ _GET为空

时间:2010-08-11 23:29:07

标签: php variables post get global-variables

我有一个看起来像这个reg.php?lang=no_NO&passkey=test的网址,我试图获取密码变量,但它一直显示为空白。

当我尝试print_r($_GET);时,它会打印Array ( )?怎么会发生这种情况?

该网站看起来像这样

    <?php

        print_r($_GET); 

        include('..\libs\Smarty.class.php');
    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Activate account</title>

(...html code.. )

$smarty = new Smarty;

//$smarty->force_compile = true;
$smarty->debugging = false;
$smarty->caching = false;
$smarty->cache_lifetime = 120;


// PHP gettext api
define('PROJECT_DIR', realpath('./'));

(... define gettext ... )

$passkey=$_GET['passkey'];

(...work with passkey ...)

$smarty->display('templates\site.tpl');

?>


</body>
</html>

就是这样。我无法理解为什么$ _GET显示空白。它现在让我疯狂了一段时间..

4 个答案:

答案 0 :(得分:6)

当我遇到像我这样难倒的东西时,我总是把我的剧本归结为基础知识。在脚本的最顶部试试这个:

var_dump($_GET);
exit;

然后你可以看到它实际上是从钩子中获取变量。如果没有,那么可能会有更深层次的东西......就像PHP真的在运行Apache一样?如果它工作,开始添加其他东西,直到它再次停止,你可以开始缩小罪魁祸首。

答案 1 :(得分:5)

从上面的评论中回答这个问题。您的GET参数可能缺失的两个原因。您可以使用模式重写设置来删除它们,也可以使用框架,例如将它们移动到别处的CodeIgniter。

如果您使用CodeIgniter,可以使用parse_str($_SERVER['QUERY_STRING'], $_GET);

重新启用它们

答案 2 :(得分:0)

确保您的php.ini文件未将max_input_vars设置为0。我不小心将我的东西设置为其他东西,所以在$ _GET中添加任何内容都会创建一个PHP警告。

答案 3 :(得分:0)

我遇到了$_GET[]空的类似问题。主要是因为某处的服务器问题,我不得不使用$GET来生成自己的$_SERVER['HTTP_REFERER']

//url='http://example.com/?search=john&location=london';
$get=array();
$query=mb_split("&",parse_url($_SERVER['HTTP_REFERER'],PHP_URL_QUERY));
if(!empty($query)) foreach ($query as $qr){
    $vars=mb_split('=',$qr);
    $get[$vars[0]]=$vars[1];
}

var_dump($get['search']);
// output 'john'