powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как извлечь значения из $_POST?
25 сообщений из 36, страница 1 из 2
Как извлечь значения из $_POST?
    #39269280
maxapet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C формы на сервер передаётся несколько полей с одинаковым именем? например, multiField. Можно ли на серверной стороне извлечь их все? Если да, то как? Поля в заголовке присутствуют, на сервер передаются - проверял.

P.S. Вариант:
Код: php
1.
2.
3.
foreach($_POST["mltiField"] as $multiField){
	/* TODO something*/
}


не работает, т.к. $_POST["multiField"] не является массивом. Проверял через is_array.
...
Рейтинг: 0 / 0
Как извлечь значения из $_POST?
    #39269291
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала var_dump($_POST);
А там видно будет, что присутствует.
...
Рейтинг: 0 / 0
Как извлечь значения из $_POST?
    #39269292
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxapet,

ответ в документации - http://php.net/manual/ru/reserved.variables.post.php

( использование name с индексами)
...
Рейтинг: 0 / 0
Как извлечь значения из $_POST?
    #39269352
maxapet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил, да, я делал так: добавлял к значению name квадратные скобки, т.е. name="phone[]". При этом $_POST["phone"] возвращает массив значений "phone", который можно прогнать через foreach , но тогда у меня перестаёт работать валидация формы - плагин jquery.validate не работает в этом случае. Т.ч. индексирование мне не подходит.
...
Рейтинг: 0 / 0
Как извлечь значения из $_POST?
    #39269358
maxapet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle, если имена полей не индексированы, то после var_dump? впрочем, как и после print_r остаётся только последнее значение multifield. Если же имена индексированы - добавлены квадратные скобки к имени, то обе функции возвращают multifield как массив.
...
Рейтинг: 0 / 0
Как извлечь значения из $_POST?
    #39269389
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxapet,

Каким образом плагин не работает? На stackoverflow масса вопросов и ответов по этой теме
...
Рейтинг: 0 / 0
Как извлечь значения из $_POST?
    #39269392
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxapetИзопропил, да, я делал так: добавлял к значению name квадратные скобки, т.е. name="phone[]". При этом $_POST["phone"] возвращает массив значений "phone", который можно прогнать через foreach , но тогда у меня перестаёт работать валидация формы - плагин jquery.validate не работает в этом случае. Т.ч. индексирование мне не подходит.Ну копаться в исходниках РНР с целью изменить его поведение вряд ли разумно. Так что или отказываться от РНР в пользу какой-то другой технологии, или править jquery.validate...
...
Рейтинг: 0 / 0
Как извлечь значения из $_POST?
    #39269405
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barlone,

Зачем править то?


Изопропил,

Покажи свой валидатор
...
Рейтинг: 0 / 0
Как извлечь значения из $_POST?
    #39269406
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxapet,

Покажи свой валидатор
...
Рейтинг: 0 / 0
Как извлечь значения из $_POST?
    #39269440
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxapetvkle, если имена полей не индексированы, то после var_dump? впрочем, как и после print_r остаётся только последнее значение multifield. Если же имена индексированы - добавлены квадратные скобки к имени, то обе функции возвращают multifield как массив.Ну да, без квадратных скобок не массив. Соответственно, единственная переменная с указанным именем будет перезаписана несколько раз.

Если ни имена полей формы, ни обработчик менять нельзя, то остаётся выкинуть эту "безиндексную" байду. Впрочем, сперва можно попробовать прочитать "чистый" ввод из php://input, конечно, если форма отправляет не multipart/form-data. Не уверен в успехе, сам не пробовал такое.
...
Рейтинг: 0 / 0
Как извлечь значения из $_POST?
    #39270089
maxapet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил, я использую вот этот
Если у имени поля ставлю [], то поле игнорируется валидатором.
...
Рейтинг: 0 / 0
Как извлечь значения из $_POST?
    #39270101
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxapet,

я собственно про ваш код обращения к валидатору
...
Рейтинг: 0 / 0
Как извлечь значения из $_POST?
    #39270234
maxapet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил, как такового обращения-то и нет. Вот настройка валидатора, если Вы это имели ввиду:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
$(document).ready(function() {
	$("#optionsFrm").validate({
		alert("validating");
		rules:{
			siteUrl: {
				required: true,
				url: true
			},
			exceptedUrl: {
				required: true,
				url: true
			},
			email: {
				required: true,
				email: true
			}
		},
		messages: {
			siteUrl: {
				required: "Необходимо указать название сайта",
				url: "Некорректный адрес"
			},
			exceptedUrl: {
				required: "Необходимо указать название сайта",
				url: "Некорректный адрес"
			},
			email: {
				required: "Укажите свой адрес для связи",
				email: "Введите корректный адрес электронной почты"
			}
		}
	});
});
...
Рейтинг: 0 / 0
Как извлечь значения из $_POST?
    #39270248
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleсам не пробовалИз интересу вот попробовал. Вполне рабочий вариант
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<form method="POST">
    <input type="text" name="phone" />
    <input type="text" name="phone" />
    <input type="text" name="phone" />
    <input type="text" name="email" />
    <input type="text" name="email" />
    <input type="text" name="email" />
    <input type="submit" />
</form>
<pre>
<?php
$post = file_get_contents("php://input");
$data = [];
foreach(explode('&', $post) as $field) {
    list($k, $v) = explode('=', $field);
    $data[$k][] = $v;
}
var_dump($data);
...
Рейтинг: 0 / 0
Как извлечь значения из $_POST?
    #39270290
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxapetВот настройка валидатора, если Вы это имели ввиду
да, именно это

в лоб можно так сделать

тогда
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
		'siteUrl[0]': {
				required: true,
				url: true
			},
		'siteUrl[1]': {
				required: false,
				url: true
			},


Код: html
1.
2.
<input name="siteUrl[0]" type="text">
<input name="siteUrl[1]" type="text">



если без индексов красиво хочется - подменить $.validator.prototype.checkForm
...
Рейтинг: 0 / 0
Как извлечь значения из $_POST?
    #39271233
maxapet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил, проблема в том, что я не знаю заранее, сколько полей будет добавлено клиентом.
...
Рейтинг: 0 / 0
Как извлечь значения из $_POST?
    #39271237
maxapet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle, попробовал, вот что получилось:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
	$post = file_get_contents("php://input");
	$data = array();
	foreach(explode('&', $post) as $field){
		list($k, $v) = explode('=', $field);
		$data[$k][] = $v;
	}
	var_dump($data);
	echo var_dump($data);


во-первых, строку $data = [] пришлось заменить на $data = array(), бо иначе выпадала ошибка.
во-вторых, в результате получил вот что:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
array(1){
 [""]=>
 array(1){
 [0]=>NULL
 }
}
array(1){
 [""]=>
 array(1){
 [0]=>NULL
 }
}


Хотя, передаётся пять полей, из них два с одинаковыми именами.
...
Рейтинг: 0 / 0
Как извлечь значения из $_POST?
    #39271241
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleИз интересу вот попробовал. Вполне рабочий вариант
нерабочий - только на первое поле из набора с одинаковым именем валидатор сработает.


maxapetпроблема в том, что я не знаю заранее, сколько полей будет добавлено клиентом.
значит при добавлении полей нужно динамически правила добавлять,
а имена давать с индексом

PS плагин кривоватый
...
Рейтинг: 0 / 0
Как извлечь значения из $_POST?
    #39271242
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxapet,

php код оставьте в покое

добавление правила -
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
$( "input[name='siteUrl["+i+"]']" ).rules( "add", {
  required: true,
  url: true,
  messages: {
	required: "Необходимо указать название сайта",
	url: "Некорректный адрес"
  }
});
...
Рейтинг: 0 / 0
Как извлечь значения из $_POST?
    #39271275
maxapet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил, спасибо за идею. Попробую.
Правда, клиент может и добавлять, и удалять добавленные элементы. Придётся это отслеживать? Или правило удалится автоматом?
...
Рейтинг: 0 / 0
Как извлечь значения из $_POST?
    #39271277
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилИз интересу вот попробовал. Вполне рабочий вариант
нерабочий - только на первое поле из набора с одинаковым именем валидатор сработает.Это, опять же, проблемы валидатора. В примере показал лишь выковыривание данных из одинаково именованных полей.


maxapetво-первых, строку $data = [] пришлось заменить на $data = array(), бо иначе выпадала ошибка.В старых версиях PHP такое было, пример тестил на 5.5.

maxapetво-вторых, в результате получил вот что:Вероятно, в Вашем конкретном случае поток php://input пуст.
...
Рейтинг: 0 / 0
Как извлечь значения из $_POST?
    #39271290
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxapetПравда, клиент может и добавлять, и удалять добавленные элементы. Придётся это отслеживать? Или правило удалится автоматом?
удалится естественным путём, ничего отслеживать не нужно.

за индексом следить при добавлении только, чтоб имя уникальным получалось,
можно и не сплошную нумерацию иметь - просто глобальный счётчик подойдёт
...
Рейтинг: 0 / 0
Как извлечь значения из $_POST?
    #39271291
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleЭто, опять же, проблемы валидатора
я в этом не сомневаюсь
плагин - кривой
...
Рейтинг: 0 / 0
Как извлечь значения из $_POST?
    #39271313
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, изначально я так понял, что если имена полей без скобок, то валидатор нормально работает. Если же со скобками - то рубится. Вот, отсюда:
maxapetдобавлял к значению name квадратные скобки, т.е. name="phone[]". При этом $_POST["phone"] возвращает массив значений "phone", который можно прогнать через foreach , но тогда у меня перестаёт работать валидация формы - плагин jquery.validate не работает в этом случае.
А теперь получается, что и без квадратных скобок валидатор не работает.
Что на самом то деле происходит?
...
Рейтинг: 0 / 0
Как извлечь значения из $_POST?
    #39271370
maxapet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle, без квадратных скобок работает валидатор. Со скобками - нет.
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как извлечь значения из $_POST?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]