2010-09-14 9 views
8

Zastanawiam się, czy istnieje jakakolwiek gwarancja na zamówienie zmiennych POST, które zobaczę po stronie serwera.Jaka jest oczekiwana kolejność tablicy przesłanej w formularzu HTML?

Mój przypadek użycia to formularz, który użytkownik wypełnia, aby wprowadzić listę nazwisk i e-maili. Używam wiersze tabeli, z których każdy posiada dwa wejścia:

<table> 
<tr> 
<td><input type='text' name='name[]' /></td> 
<td><input type='text' name='email[]' /></td> 
</tr> 
<tr> 
<td><input type='text' name='name[]' /></td> 
<td><input type='text' name='email[]' /></td> 
</tr> 
</table> 

Wiersz może być klonowane za pośrednictwem javascript, aby umożliwić użytkownikowi wpisywać kolejne nazwiska i e-maile, więc nie będę wiedzieć z wyprzedzeniem how wiele zostanie złożonych.

Po stronie serwera widzę $ _POST ['email'] i $ _POST ['name'] ustawione, ale zastanawiam się, czy mogę bezpiecznie założyć $ _POST ['email'] [0] będzie odpowiadać $ _POST ['name'] [0], $ _POST ['email'] [1] będzie odpowiadać $ _POST ['name'] [1], i tak dalej. Niektóre podstawowe testy wydają się wskazywać tak, ale zastanawiam się, czy istnieje gwarancja, czy też mam szczęście.

Odpowiedz

12

dlaczego nie dodać grupowania klucza jak:

<td><input type='text' name='user[0][name]' /></td> 
<td><input type='text' name='user[0][email]' /></td> 
</tr> 
<tr> 
<td><input type='text' name='user[1][name]' /></td> 
<td><input type='text' name='user[1][email]' /></td> 

a następnie manuall ustawić indeksy user kiedy można sklonować na podstawie aktualnego numeru. W ten sposób wszystko jest już powiązane.

1

Dane pojawią się w tej samej kolejności, jak w formularzu. Więc pierwszym rzędzie mają kluczową 0, drugi rząd - 1.

+0

Mówi, kto? Muszę być absolutnie pewien, czy użyję go w produkcji. –

+0

dlaczego nie wystarczy przetestować prosty formularz i wynik var_dump. Zobaczysz wynik. wynik będzie zawsze taki sam jak w formularzu HTML (oczywiście możesz zmienić pozycję widoczności elementów, które nie mają efektów) –

+1

Mówi specyfikacja HTML: "Nazwy/wartości kontrolne są wymienione w kolejności, w jakiej pojawiają się w dokumencie . " http://www.w3.org/TR/html401/interact/forms.html#form-content-type – webbiedave

0

Jak powiedział Vaidas Zilionis, dane będą wyświetlane w dokładnie tej samej kolejności, w jakiej pojawiają się w formie, patrz HTML 4.01 Specification W3C:

application/x WWW postać urlencoded
[...] 2. nazwy kontrolne/wartości wymieniono w kolejności występowania w dokumencie.

wieloczęściowy/form-data
[...] Komunikat A "wieloczęściowy/kształtowe danych" zawiera szereg elementów, z których każdy reprezentuje skutecznej kontroli. Części są wysyłane do agenta przetwarzania w tej samej kolejności, w której odpowiednie formanty pojawiają się w strumieniu dokumentu.

Powiązane problemy