Подтвердить что ты не робот

Является ли порядок INPUTS в POST гарантированным для ввода массива в PHP?

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

<?php
$numRows = $_GET['NUM_ROWS_REQUESTED'];

?>
<form method="post">
<?php
for($i = 0; $i < $numRows ;$i++) {
  $uuid = uniqid();
?>

  <input type="text" name="MYDATA[<?php print $uuid; ?>][FIRST_NAME]" />
  <input type="text" name="MYDATA[<?php print $uuid; ?>][LAST_NAME]" />
<?php
}
?>
</form>

Мне интересно, если после публикации формы я получаю эти записи в массиве $_POST['MYDATA'], если мне будет гарантировано, что они будут упорядочены в той же последовательности, что и на экране. Или они будут упорядочены с помощью uniqid(), который генерируется случайным образом?

Причина, по которой я использую уникальный идентификатор вместо целых чисел, который будет проще упорядочить, заключается в том, что пользователи могут удалять строки и добавлять дополнительные строки, используя javascript на этой странице. Было бы слишком сложно проверить наличие столкновений.

4b9b3361

Ответ 1

Спецификация W3 не содержит правил, в каком порядке значения формы должны быть собраны в набор данных, поэтому технически вы не можете быть уверены. С другой стороны, я не видел случая (из многочисленных браузеров в многочисленных операционных системах на протяжении многих лет), где данные не были отправлены в списке-листинг-порядке. Я действительно не проверял случаи, когда изменял значения tabindex по умолчанию (UI).

Вы всегда можете отсортировать массив (asort) после того, как вы его получили, чтобы быть уверенным в том, какой порядок вы читаете.

Ответ 2

Это гарантируется HTML4.01 (для -urlencoded, но предполагается, что он идентичен для /form -data), и все текущие браузеры представляют поля формы в том порядке, в котором они указаны в документе.

Итак, да, они упорядочены по их внешнему виду, а не случайным uuid.