Проводка массива из формы

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

Вот фрагмент того, что я делаю в данный момент

<form enctype="multipart/form-data" action="process.php" method="POST"> 
...
more inputs
...

<!-- Hidden data -->
<input type="hidden" name="TimeToRenderHoursInput" value="<?php echo $RenderHours; ?>" />
<input type="hidden" name="TimeToRenderDaysInput" value="<?php echo $RenderDays; ?>" />
<input type="hidden" name="TimeToRenderYearsInput" value="<?php echo $RenderYears; ?>" />
<input type="hidden" name="ContentMinutesInput" value="<?php echo $ContentMinutes; ?>" />
<input type="hidden" name="ContentMinutesSelector" value="<?php echo $ContentMinutesSelector; ?>" />
<input type="hidden" name="PriorityInput" value="<?php echo $Priority; ?>" />
<input type="hidden" name="AvgFrameRenderTimeInput" value="<?php echo $AverageFrameRenderTime; ?>" />
<input type="hidden" name="AvgFrameRenderTimeSelector" value="<?php echo $AverageFrameRenderSelector; ?>" />
<input type="hidden" name="CoresInTestInput" value="<?php echo $CoresInTest; ?>" />
<input type="hidden" name="EstPriceInput" value="<?php echo $EstPrice; ?>" />
<!-- End hidden -->

<input type="image" src="http://www.venndigital.co.uk/testsite/renderbutton/_includes/images/button/submit.jpg" alt="Submit" value="Submit" style="border:0!important;" />

В моем process.php im, затем вызывая данные как таковые...

$first_name = $_POST['first_name']; 
$company_name = $_POST['company_name']; 
$email_from = $_POST['email']; 
$address = $_POST['address']; 
$postcode = $_POST['postcode']; 
$RenderHours = $_POST['TimeToRenderHoursInput'];
$RenderDays = $_POST['TimeToRenderDaysInput'];
$RenderYears = $_POST['TimeToRenderYearsInput'];
$ContentMinutes = $_POST['ContentMinutesInput'];
$ContentMinutesSelector = $_POST['ContentMinutesSelector'];
$Priority = $_POST['PriorityInput'];
$AverageFrameRenderTime = $_POST['AvgFrameRenderTimeInput'];
$AverageFrameRenderSelector = $_POST['AvgFrameRenderTimeSelector'];
$CoresInTest = $_POST['CoresInTestInput'];
$EstPrice = $_POST['EstPriceInput'];

Есть ли способ опубликовать его как массив? Во всяком случае, мой метод плохой практики?

Ответы

Ответ 1

Дайте каждому входу имя в формате массива:

<input type="hidden" name="data[EstPriceInput]" value="" />

Затем в PHP $_POST['data']; будет массив:

  print_r($_POST);         // print out the whole post
  print_r($_POST['data']); // print out only the data array

Ответ 2

Когда вы публикуете эти данные, они сохраняются в виде массива в $_POST.

При желании вы можете сделать что-то вроде:

<input name="arrayname[item1]">
<input name="arrayname[item2]">
<input name="arrayname[item3]">

Затем:

$item1 = $_POST['arrayname']['item1'];
$item2 = $_POST['arrayname']['item2'];
$item3 = $_POST['arrayname']['item3'];

Но я не вижу смысла.

Ответ 3

Вы уже это делаете, по сути. Когда форма отправляется, данные передаются через массив сообщений ($ _POST). Ваш process.php получает этот массив и перераспределяет его значения как отдельные переменные.

Ответ 4

Почему вы отправляете его через сообщение, если у вас уже есть его на стороне сервера (PHP)?

Почему бы просто не сохранить массив в переменной $_SESSION, чтобы вы могли использовать его, когда форма отправляется, что может сделать ее более "защищенной", так как клиент не может изменить переменные, отредактировав исходный код.

Это будет зависеть от того, как вы действительно хотите это сделать.

Ответ 5

Вы можете использовать встроенную функцию:

extract($_POST);

он создаст переменную для каждой записи в $_POST.

Ответ 6

То, что вы делаете, не обязательно является плохой практикой, но, тем не менее, требует необычного набора текста. Я бы выполнил то, что вы пытаетесь сделать так.

foreach($_POST as $var => $val){
    $$var = $val;
}

Это займет все переменные POST и поместит их в свои собственные переменные. Поэтому, если у вас есть поле ввода с именем электронной почты и luser помещается в [email protected], у вас будет переменная с именем $email со значением "[email protected]".

Ответ 7

Если вы хотите, чтобы все в вашем сообщении было как $Variables, вы можете использовать что-то вроде этого:

foreach($_POST as $key => $value) { eval("$" . $key . " = " . $value"); }