У меня есть URL-адрес, который выглядит так 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 отображается пустым. Это уже давно сводит меня с ума..
Ответ 1 · рейтинг 8 · Chuck Burgess
Когда я сталкиваюсь с чем-то, что ставит меня в тупик, я всегда довожу свой сценарий до основ. Попробуйте это в самом верху вашего скрипта:
var_dump($_GET);
exit;
Затем вы можете увидеть, действительно ли он получает vars от хука. Если нет, то может быть что-то более глубокое... например, действительно ли PHP работает с Apache? Если это работает, начните добавлять другие вещи, пока это снова не остановится, и вы не сможете начать сужать виновника.
Ответ 2 · рейтинг 5 · Matt Williamson
Перемещение этого в ответ из моих комментариев выше. Две причины, по которым ваши параметры GET могут отсутствовать. Либо у вас настроен режим перезаписи, который удаляет их, либо вы используете фреймворк, такой как CodeIgniter, который перемещает их в другое место.
Если вы используете CodeIgniter, вы можете снова включить их с помощью parse_str($_SERVER['QUERY_STRING'], $_GET);
Ответ 3 · рейтинг 1 · user1345650
Убедитесь, что ваш файл php.ini не устанавливает max_input_vars в 0. Я случайно установил для себя что-то другое, поэтому добавление чего-либо в $_GET создало предупреждение PHP.
Ответ 4 · Mugasho Lincoln
я столкнулся с аналогичной проблемой $_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'