我有一个看起来像这个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显示空白。它现在让我疯狂了一段时间..
答案 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'