$ _GET пуст, когда в URL есть переменные - PullRequest
4 голосов
/ 12 августа 2010

У меня есть URL-адрес, похожий на этот reg.php?lang=no_NO&passkey=test, и я пытаюсь получить переменную 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>

вот и все. Я не могу понять, почему $ _GET отображается пустым. Некоторое время это сводит меня с ума ..

Ответы [ 3 ]

6 голосов
/ 12 августа 2010

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

var_dump($_GET);
exit;

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

5 голосов
/ 12 августа 2010

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

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

0 голосов
/ 20 июля 2014

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

...