$ _GET пуст, когда URL имеет переменные

У меня есть URL-адрес, похожий на этот reg.php?lang=no_NO&passkey=test и im, пытающийся получить переменную passkey, но он продолжает отображаться пустым.

Когда я пытаюсь 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> в  <?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 отображается пустым. Это немного сбило меня с ума.

Когда я сталкиваюсь с чем-то, что меня так пьет, я всегда придерживаюсь своего сценария вплоть до основ. Попробуйте это на самом верху вашего скрипта:

 var_dump($_GET); exit; 

Тогда вы можете видеть, действительно ли на самом деле он вытаскивает вары с крючка. Если нет, то может быть что-то более глубокое … как работает PHP с Apache? Если это сработает, начните добавлять другие вещи, пока они не прекратятся снова, и вы можете начать сужать виновника.

Перемещая это в ответ на мои комментарии выше. Две причины, по которым ваши параметры GET могут отсутствовать. Либо у вас установлен режим перезаписи, который их удаляет, либо вы используете фреймворк, такой как CodeIgniter, который перемещает их в другом месте.

Если вы используете CodeIgniter, вы можете повторно включить их с помощью parse_str($_SERVER['QUERY_STRING'], $_GET);

Убедитесь, что ваш файл php.ini не устанавливает max_input_vars в 0 . Я случайно установил свой код на что-то еще, поэтому добавление чего-либо к $ _GET создало предупреждение PHP.