2010-08-11 1 views
4

У меня есть 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 отображается пустым. Это заставляло меня сходить с ума на некоторое время.

+0

Вы используете любой тип перезаписи url или reg.php фактический файл? – darma

+5

Вы случайно используете CodeIgniter или другую структуру? Иногда они топают по переменным $ _REQUEST. –

+0

@darma: даже если reg.php является реальным файлом - mod_rewrite может потерять строку запроса, если она была написана неправильно – zerkms

ответ

6

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

var_dump($_GET); 
exit; 

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

+0

привет, я получаю var dump как пустой массив .. как отлаживать это ... ?? У меня есть добавленные значения в URL-адресе –

+0

Это означает, что ничего не происходит в запросе GET. Попробуйте $ _REQUEST. Вы уверены, что не публикуете? –

5

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

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

+5

распечатка '$ _SERVER ['QUERY_STRING']' не может быть плохим местом для начала, независимо от фреймворка. – aaronasterling

+0

Я хотел бы добавить, что для некоторых фреймворков/CMS может быть причина, по которой mod_rewrite не включен. –

0

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