получение имен параметров и их значений из $QUERY_STRING

  • Автор темы LostAgain
  • Дата начала

LostAgain

Guest
получение имен параметров и их значений из $_REQUEST

Hi All!

проблема в следующем:

есть url http://brbr.com/sample.php?param1=333&param2=hjg

скрипт не знает названия переменных которые передаются, их может быть переменное количество и с разными названиями, поэтому запись
print $param1;

не подходит. С parse_str($_SERVER['QUERY_STRING'],$arr) тоже ничего не вышло.

пишу так

PHP:
$count = $HTTP_SERVER_VARS["argc"];
$params = $HTTP_SERVER_VARS["argv"];

$i=0;

while($i<count)
{
print $params[$i];
$i++;
}
и значения не выводятся, а мне нужно знать и имена переменных и их значения.


как получить имена передаваемых переменных и соответствующие им значения? также имеется ввиду что метод передачи не важен(может быть и GET и POST).
 

RomikChef

Guest
откуда ты вообще взял эти argv и argc!
Это совсем для другого!
 

LostAgain

Guest
Автор оригинала: Demiurg
print_r($_REQUEST);
получаю эту строчку

Array ( [params] => Array ( [0] => 898 [1] => про ) [te] => run )

пишем

$_REQUEST[$params][0] -- это значение которое я ищу

но то, что массив или переменная называется params или te я не знаю, запись типа

$_REQUEST[0][0] -- вообще ничего не дает

а мне нужны пары <имя параметра>-<значение>
 

RomikChef

Guest
Screjet ты путаешь standalone и CGI
пока не разберешься - не пиши
 

Screjet

Новичок
RomikChef, согласен,
но своими силами не разобрался,
подскажи как собрать CGI-версию ПХП?
 

LostAgain

Guest
Автор оригинала: Demiurg
[m]foreach[/m]
:) 10x

PHP:
class Value
{
  function Value($name,$val)
  {
    $this->Name=$name;
    $this->Value=$val;
  }
  var $Name;
  var $Value;
}


function REQUEST_VALUES($rstring)
{

  if (empty($rstring))
  {
    $rstring = $_REQUEST;
  }

  $i=0;
  while (list($varname,$varvalue) = each($rstring))
  {
    if (is_array($varvalue))
    {
      $j=0;
      while($j<sizeof($varvalue))
      {
        $params[$i]=new Value($varname,$varvalue[$j]);
        $j++;$i++;
      }
    }
    else
    {
      $params[$i]=new Value($varname,$varvalue);;
      $i++;
    }
  }
  return $params;
}


//test
$vals = REQUEST_VALUES("");

$i=0;
while($i<sizeof($vals))
{
  print $vals[$i]->Name;
  print " : ";
  print $vals[$i]->Value;
  print "</br>";
  $i++;
}
 

RomikChef

Guest
абсолютно не понял, зачем эти два класса нужны...


Тебе, кстати, нужен не $_REQUEST, а $_GET
в реквесте лишнее может оказаться.
 

LostAgain

Guest
Автор оригинала: RomikChef
абсолютно не понял, зачем эти два класса нужны...


Тебе, кстати, нужен не $_REQUEST, а $_GET
в реквесте лишнее может оказаться.
например что?


как еще я могу получить массив имен параметров и их значений из $QUERY_STRING?

данные могут передаваться как getom так и post-ом и мне не важно как они передаются
 

Bloody

Guest
Если у тебя не регистрируются $_GET и $_POST, попробуй вместо $_GET использовать $HTTP_GET_VARS, вместо $_POST $HTTP_POST_VARS. Это все...
 

LostAgain

Guest
Автор оригинала: RomikChef
куки

если данные передаются постом, то к квери стрингу они не имеют отношения.
PHP:
print"<form action='http://brbr/sample3.php?params1=ttt&params4=444' method='POST'>
<input type=\"submit\" value=\"run\" name=\"te\">
</form>";
ну и ладно с куками - их просто не будет :)

этот скрипт просто будет прриинимать переменное кол-во параметров и возвращать файл.



вот такой формой post;
и в $REQUEST я верно получаю все значения, в чем тут проблема?
 

Screjet

Новичок
Bloody
не то.. фактически это копии тех же $_POST/$_GET...

Вот что нашел про CLI:
It is based on CGI SAPI with all CGI specific things removed.

Я решил эту проблему самым простым способом:
PHP:
parse_str($_SERVER['QUERY_STRING'], $_GET);
 

Bloody

Guest
Ну, я об этом и говорю. Просто в более ранних версиях не существует $_POST и $_GET. А HTTP_... начиная с 4-й версии регистрируются всегда (независимо от параметра track_vars)
 

RomikChef

Guest
данные могут передаваться как getom так и post-ом
form action='http://brbr/sample3.php?params1=ttt&params4=444'
в процитированном экшене данные передаются гетом.
и лежат - в $_GET
в чем тут проблема?
проблема в том, что ты так выражаешь свои мысли, что их невозможно понять.
сначала тебе нужна квери стринг, а потом - метод пост.

Я рад, что предложенное решение тебя устроило, даже несмотря на несоответствие поставленному условию.

А все-таки, поделись - зачем ты создаешь объект на каждую полученную от юзера переменную?

И чем тебя не устраивает уже готовый массив РЕКВЕСТ как контейнер?
 
Сверху