Когда могут быть данные в $ _GET и $ _POST - PullRequest
7 голосов
/ 15 ноября 2009

Возможно ли получить данные как в $ _GET, так и в $ _POST? И как это связано с тем, что находится в $ _REQUEST?

Ответы [ 4 ]

17 голосов
/ 15 ноября 2009

Да, это возможно. Рассмотрим такую ​​форму:

<form action="foobar.php?a=123&b=456" method="post">
    <input type="text" name="a" value="llama">
    <input type="text" name="b" value="duck">
    <input type="submit" name="go" value="Submit me!">
</form>

При отправке этой формы $_GET["a"] == "123", $_GET["b"] == "456", $_POST["a"] == "llama", $_POST["b"] == "duck" и $_POST["go"] == "Submit me!".

Как это относится к суперглобальному $_REQUEST, зависит от значения параметра конфигурации PHP request_order (или более старого variables_order), например документация php.ini объясняет.

2 голосов
/ 15 ноября 2009

Определенно могут быть данные в обоих ... Рассмотрим следующую (очень простую) страницу:

<body>
  <form method="post" action="params.php?myparam=myval">
    <input type="text" name="param1"></input>
    <input type="submit" name="submit" value="submit" />
  </form>
</body>

Обратите внимание, что action формы содержит строку запроса, а метод - post. $_GET содержит параметры строки запроса, $_POST содержит параметры формы, а $_REQUEST содержит объединенные параметры из обоих массивов:

array(3) {
  ["myparam"]=>
  string(1) "myval"
  ["param1"]=>
  string(0) ""
  ["submit"]=>
  string(6) "submit"
}

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

1 голос
/ 15 ноября 2009

Это возможно. Директива request_order или (если она не установлена) variables_order определяет, какой будет иметь приоритет в $_REQUEST, если в обоих ключах установлена ​​клавиша.

0 голосов
/ 15 ноября 2009

Это возможно в PHP, потому что, несмотря на их имена, $ _GET и $ _POST действительно не нуждаются в GET или POST.

  • $ _ GET содержит строку запроса, проанализированную как закодированные в форме переменные.
  • $ _ POST содержит тело запроса, проанализированное как закодированные в форме переменные

Неважно, какой метод запроса используется - это может быть PUT, и эти суперглобальные переменные все равно будут заполнены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...