Получить все переменные, отправленные с POST? - PullRequest
69 голосов
/ 21 ноября 2011

Мне нужно вставить все переменные, отправленные с постом, они были флажками, каждый из которых представляет пользователя.

Если я использую GET, я получаю что-то вроде этого:переменные в базе данных.

Как мне получить все переменные, отправленные с POST?Как массив или значения, разделенные запятыми или что-то?

Ответы [ 6 ]

136 голосов
/ 21 ноября 2011

Переменная $_POST заполняется автоматически.

Попробуйте var_dump($_POST);, чтобы увидеть содержимое.

Вы можете получить доступ к отдельным значениям, например так: echo $_POST["name"];

Это, конечно, предполагает, что ваша форма использует типичныекодировка формы (т. е. enctype=”multipart/form-data”

Если ваши данные поста находятся в другом формате (например, JSON или XML, вы можете сделать что-то вроде этого:

$post = file_get_contents('php://input');

и $post будет содержатьнеобработанные данные.

Предполагая, что вы используете стандартную переменную $_POST, вы можете проверить, установлен ли флажок следующим образом:

if(isset($_POST['myCheckbox']) && $_POST['myCheckbox'] == 'Yes')
{
     ...
}

Если у вас есть массив флажков (например,

<form action="myscript.php" method="post">
  <input type="checkbox" name="myCheckbox[]" value="A" />val1<br />
  <input type="checkbox" name="myCheckbox[]" value="B" />val2<br />
  <input type="checkbox" name="myCheckbox[]" value="C" />val3<br />
  <input type="checkbox" name="myCheckbox[]" value="D" />val4<br />
  <input type="checkbox" name="myCheckbox[]" value="E" />val5
  <input type="submit" name="Submit" value="Submit" />
</form>

Использование [ ] в имени флажка указывает на то, что PHP-скрипт будет обращаться к выбранным значениям в виде массива. В этом случае $_POST['myCheckbox'] не вернет одну строку, но вернет массивсостоящий из всех значений отмеченных флажков.

Например, если бы я установил все флажки, $_POST['myCheckbox'] был бы массивом, состоящим из: {A, B, C, D, E}. Вот пример того, как получитьмассив значений и их отображение:

  $myboxes = $_POST['myCheckbox'];
  if(empty($myboxes))
  {
    echo("You didn't select any boxes.");
  }
  else
  {
    $i = count($myboxes);
    echo("You selected $i box(es): <br>");
    for($j = 0; $j < $i; $j++)
    {
      echo $myboxes[$j] . "<br>";
    }
  }
65 голосов
/ 21 ноября 2011

вы должны иметь доступ к ним из переменной $_POST:

foreach ($_POST as $param_name => $param_val) {
    echo "Param: $param_name; Value: $param_val<br />\n";
}
10 голосов
/ 22 марта 2016

устарел и не желает иметь прямой доступ к суперглобалам (начиная с php 5.5, я думаю?)

Каждая современная IDE скажет вам:

Не обращайтесь к суперглобалам напрямуюИспользуйте некоторые функции фильтра (например, filter_input)

Для нашего решения, чтобы получить все параметры запроса, мы должны использовать метод filter_input_array

Чтобы получить все параметры изметод ввода используйте это:

$myGetArgs = filter_input_array(INPUT_GET);
$myPostArgs = filter_input_array(INPUT_POST);
$myServerArgs = filter_input_array(INPUT_SERVER);
$myCookieArgs = filter_input_array(INPUT_COOKIE);
...

Теперь вы можете использовать его в var_dump или в foreach -Coops

Что не работает, так это доступ к суперглобальному $ _REQUEST с помощью этого метода.Он всегда возвращает NULL, и это правильно.

Если вам нужно получить все входные параметры, используя разные методы, просто объедините их, как в следующем методе:

function askForPostAndGetParams(){
    return array_merge ( 
        filter_input_array(INPUT_POST), 
        filter_input_array(INPUT_GET) 
    );
}

Редактировать: расширенная версия этого метода (работает также, когда не задан один из методов запроса):

function askForRequestedArguments(){
    $getArray = ($tmp = filter_input_array(INPUT_GET)) ? $tmp : Array();
    $postArray = ($tmp = filter_input_array(INPUT_POST)) ? $tmp : Array();
    $allRequests = array_merge($getArray, $postArray);
    return $allRequests;
}
8 голосов
/ 21 ноября 2011

Итак, что-то вроде массива $_POST?

Вы можете использовать http_build_query($_POST), чтобы снова получить их в строку var=xxx&var2=yyy.Или просто print_r($_POST), чтобы посмотреть, что там.

6 голосов
/ 13 сентября 2015

Почему бы и нет, это просто:

extract($_POST);
5 голосов
/ 19 января 2016

Используя это вы можете получить всю переменную записи

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