Как настроить систему, которая считывает данные $ _POST, которые поступают из формы с определенным пользователем количеством входов? Могу ли я использовать индекс, такой как $ _POST [1] или что-то подобное? (например, создавать / удалять страницы, отправлять изменения и обрабатывать ввод на столько страниц, сколько пользователь решает, что они хотят)
В вашей форме создайте свои входные переменные с именами, заканчивающимися квадратными скобками:
<input name="lines[]" type="text"><br> <input name="lines[]" type="text"><br> <input name="lines[]" type="text"><br>
Вы можете добавить столько, сколько вам нужно, или создать их на лету в javascript.
Когда форма отправляется, данные будут отображаться в виде массива в $ _POST:
echo $_POST['lines'][0]; echo $_POST['lines'][1]; echo $_POST['lines'][2];
Вы должны сделать что-то вроде этого:
foreach($_POST as $k => $v){ // The action you want to perform for each input }
Чтобы сделать более продвинутое решение, я думаю, нам нужно немного больше информации о том, что именно это, вы хотите достичь 🙂
Вы можете создать массив полей, используя имя, например, переменные [], а затем пропустить их с помощью цикла foreach.
Установка переменной с квадратными скобками устанавливает ее как массив, который позволяет вам перебирать их. Если вам нужны имена переменных, вы можете передавать их динамически, написав их в квадратных скобках. НАПРИМЕР:
<input type="text" name="variables[variableName-one]" /> <input type="text" name="variables[variableName-two]" />
Преимущество использования этого метода заключается в том, что вы можете использовать имена ключей массива (variableName-one и т. Д.) В своем коде, установив ключ в цикле foreach. Похожий на:
foreach($_POST['variables'] as $variableName => $variable){ echo $variableName.' was set as '.$variable; }
В противном случае вы можете оставить его пустым, и вы можете получить к ним доступ, например, например:
$_POST['variables'][1]
Я не знаю, полностью ли я понял ваш вопрос
foreach ($_POST as $key=>$value) { doSomething($key,$value); }
Где в $ key вы нашли имя ввода и значение $ value его значение. Конечно, вы не можете слишком обобщать это. Например, если есть флажок и этот флажок не проверяется, вы не получите его в массиве сообщений.
если у вас есть несколько входов с массивом типа name: вы получите их как массив.
foreach ($_POST as $key=>$value) { if(is_array($value)){ foreach($value as $key2=>$value2){ doSomethingOther($key,$key2,$value2); } } else { doSomething($key,$value); } }
Но таким образом вы должны написать очень конкретный код для любого ввода, который вы можете получить. Или вам нужно найти способ кодирования имени ввода, чтобы они дали вам подсказку о том, что вы с ними делаете. И, возможно, вы подвергли себя риску захвата, если вы принимаете все возможные входы, которые может отправить один пользователь.