19

ユーザーが無制限の数のデータ行を入力するフォームがあります。ユーザーは、画面上で必要な数の行を入力することによってフォームに到達します。

<?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()それとも、ランダムに生成された によって並べ替えられますか?

順序付けが簡単な整数の代わりに一意の ID を使用する理由は、ユーザーがそのページで JavaScript を使用して行を削除したり、行を追加したりできるためです。衝突をチェックするのは非常に困難です。

4

2 に答える 2

11

W3 仕様には、フォームの値をデータ セットに組み立てる順序に関する規則が含まれていないため、技術的には確実ではありません。一方、データがソース リスト順で提供されていないケースは (長年にわたって多数の OS 上の多数のブラウザーから) 見たことがありません。デフォルトの (UI によって生成された) tabindex 値を変更する場合については、実際にはテストしていません。

値を読み取る順序を確認するために、配列を受け取った後はいつでも配列を並べ替えることができます ( asort )。

于 2010-12-09T16:47:48.720 に答える
8

これは HTML4.01 によってある程度保証されており ( -urlencodedの場合ですが、/form-data の場合は同じであると想定されています)、現在のすべてのブラウザーは、ドキュメントに記載されている順序でフォーム フィールドを送信します。

そうです、それらはランダムな uuid ではなく、外観によって順序付けられます。

于 2010-12-09T16:47:07.440 に答える