2012-06-15 3 views
0

У меня есть функция, которая возвращает параметры запроса для каждого запроса:

private function GetRequestParams() { 
    $method = $_SERVER['REQUEST_METHOD']; 
    switch (strtolower($method)) { 
     case 'put': 
      $this->requestParams = //parse_str(HttpResponse::getRequestBody()) 
      $this->requestParams = array_map('urldecode', $this->requestParams); 
      break; 
     case 'post': 
      $this->requestParams = $_REQUEST; 
      break; 
     case 'get': 
      $this->requestParams = $_GET; 
      break; 
     case 'delete': 
      $this->requestParams = $_REQUEST; 
      break; 
     default: 
      $this->requestParams = $_REQUEST; 
    } 
} 

, но когда я называю тот же URL с GET и POST, параметры $ _POST являются пустыми , Я использую WizTools RestClient и Apache сервер из инструментов XAMPP позвонить по следующему адресу: http://localhost:80/project/?item=1

Для GET запроса Params правильно содержать «элемент», но для POST, запрос PARAMS пустует.

Кажется, что метод поста правильно обнаружен как следующая функция, правильно посылает postDescription() метод:

$method = strtolower($_SERVER['REQUEST_METHOD']) . 'Description';

Я нашел информацию для редактирования php.ini post_max_size = 8 * M * до 8 * MB * но это не сработало для меня.

+0

попробуйте html-форму с методом = сообщение – goat

+0

Почему вы не можете использовать '$ _REQUEST' здесь? –

+1

Почему бы не использовать $ _REQUEST? – Ryan

ответ

6

$_GET заполнен данными из строки запроса URL.

$_POST заселен данными из сообщение тело сообщения.

Если вы сделаете пост запрос но передавать данные в строке запроса, то данные будут отображаться в $_GET не $_POST.

0

Я не совсем понимаю, почему вы должны были проверить их для начала, но $_GET извлекает параметры, отправленные по URL-адресу (как это у вас есть), тогда как $_POST извлекает данные «отправлено» на сервер. .. обычно через какую-то форму.

Какая у вас конечная цель?

0

Прежде всего, вы никогда не должны использовать $ _REQUEST, как указано в некоторых комментариях.

От http://php.net/manual/en/reserved.variables.request.php

Note: 
The variables in $_REQUEST are provided to the script via the GET, POST, 
and COOKIE input mechanisms and therefore could be modified by the remote user 
and cannot be trusted. 
The presence and order of variables listed in this array is defined according 
to the PHP variables_order configuration directive. 

И как Квентин уже сказал в своем ответе, если вы сделаете запрос POST СТОЛБ-данных должен быть представлен в теле

Материал из Википедии http://en.wikipedia.org/wiki/POST_(HTTP)

Наименование = Джонатан + Доу & Возраст = 23 & Формула = а +% 2B + B +% 3D% 3D + 13% 25% 21

Привет

+0

Спасибо всем за помощь. Я пытаюсь создать простую службу REST, которая поддерживает GET и POST, и я ее тестировал. Кажется, я тестировал это неправильно :). Еще раз спасибо. –

1

$ _POST заполняется с помощью HTML-форм. Если у вас есть форма и метод use = "POST", то результаты из формы будут помещены в POST. В противном случае, если вы используете метод = "get" из форм ИЛИ используйте строки запроса (например, index.php? Foo = bar & this = that), то результаты будут в $ _GET.

Его вообще безопасно использовать $ _REQUEST, однако.

Смежные вопросы