2012-04-03 7 views
13

W ciągu parametru GET lub żądania POST "kodeka www-formularz-urn" można określić tablicę parametrów, nazywając je nawiasami (np. "Nazwa []").W jaki sposób mogę POST tablicę z kodowaniem wieloczęściowym/formularzy danych?

Czy istnieje "prawidłowy" (lub przynajmniej szeroko rozpowszechniony konwencja) sposób określania tablicy parametrów za pomocą żądania POST "wieloczęściowe/dane formularza"?

Czy poniższe informacje są poprawne?

Content-Type: multipart/form-data; boundary=--abc 

--abc 
Content-Disposition: form-data; name="name[]" 

first index 
--abc 
Content-Disposition: form-data; name="name[]" 

second index 

Jeśli jest to zależne od platformy, interesuję się konwencją dotyczącą Apache/PHP.

Odpowiedz

15

Jeśli chcesz skojarzony tablicę można przekazać indeksu w nazwie pola formularza:

Content-Type: multipart/form-data; boundary=--abc 

--abc 
Content-Disposition: form-data; name="name[first]" 

first value 
--abc 
Content-Disposition: form-data; name="name[second]" 

second value 

Następnie na php print_r poziom ($ _ POST) nie daje

Array ([name] => Array ([first] => 'first value', [second] => 'second value'))

Jeśli jesteś po normalnej uporządkowanej tablicy, to samo co Ty:

Content-Type: multipart/form-data; boundary=--abc 

--abc 
Content-Disposition: form-data; name="name[]" 

first index 
--abc 
Content-Disposition: form-data; name="name[]" 

second index 

Następnie na poziomie php print_r ($ _ POST) nie daje

Array ([name] => Array ([0] => 'first index', [1] => 'second index'))

Params z [] w ich nazwach tłumaczeniu na tablicach na stronie serwera jest cechą specyficzną dla PHP (http://www.php.net/manual/en/faq.html.php#faq.html.arrays).

Co do kodowania wieloczęściowy można znaleźć więcej w RFC: http://www.ietf.org/rfc/rfc1867.txt

+1

Thanks Aleksego. Czy zdarza Ci się mieć odniesienie do jakiejkolwiek specyfikacji lub dokumentacji, która to definiuje? Konkretnie w odniesieniu do wieloczęściowego testu POST w porównaniu do standardowego testu z kodem urn? – DougW

+1

Dodałem kilka linków do odpowiedzi –

+0

Zdecydowanie jestem tutaj wybredny, ale chcę podkreślić, że dokumenty PHP tylko wspominają o tej konwencji w odniesieniu do formularzy internetowych, które zawsze POST przez x-www- Form-urlencoded. Domyślam się, że do czasu, gdy zmienne POST zostaną przekazane z Apache do PHP, nie ma rozróżnienia między typami zawartości, ale nie przeczytałem niczego, co by to potwierdzało. I na pewno jest wiele pozornie bezpiecznych założeń dotyczących PHP, które okazują się katastrofalnie niepoprawne. Upewnię się, że to sprawdzę. – DougW