Получить все переменные, отправленные с помощью POST?

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

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

?19=on&25=on&30=on 

Мне нужно вставить переменные в базу данных.

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

Переменная $_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): "); for($j = 0; $j < $i; $j++) { echo($myboxes[$i] . " "); } } 

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

 foreach ($_POST as $param_name => $param_val) { echo "Param: $param_name; Value: $param_val<br />\n"; } 

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

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

Он устарел и не желает напрямую обращаться к суперглобалам (так как 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 -Loops

То, что не работает, – это доступ к $ _REQUEST Superglobal с помощью этого метода. Он Allways возвращает 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; } 

Почему бы и нет, это легко:

 extract($_POST); 

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

 print_r($_POST)