Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][html] Przesyłanie tablic (checkboxów,fileformów) przez post
DiH
post
Post #1





Grupa: Zarejestrowani
Postów: 251
Pomógł: 34
Dołączył: 7.01.2010

Ostrzeżenie: (0%)
-----


Spędziłem ponad godzinę nad tym durnym błędem, więc dzielę się swoim rozwiązaniem. A więc, aby zabezpieczyc swój formularz używałem prostej pętli:
  1. foreach ($_POST as $key => $value) {
  2. $_POST[$key] = validateSyntax(dishtml($value));
  3. }

Niestety, kiedy próbowałem przekazac wartosci checkboxow, nie bylo żadnego rezultatu. Wpadłem więc na pomysł, jak rozwiązac ten problem z podobnymi formularzami, przy np. uploadzie plików, gdzie dane takze przekazywane sa jako tablica. Powyzsza petla powinna wygladac tak:
  1. foreach ($_POST as $key => $value) {
  2. if(is_array($_POST[$key]) == true) {
  3. for($i = 0; $i < count($_POST[$key]); $i++) {
  4. $_POST[$key][$i] = twoja_funkcja($_POST[$key][$i]);
  5. }
  6. }
  7. else {
  8. $_POST[$key] = twoja_funkcja($value);
  9. }
  10. }


Ten post edytował DiH 9.03.2010, 01:21:18
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




jest to dosc oczywiste rozwiązanie i raczej ogólnie stosowane. No ale skoro chciales sie tak bardzo podzielic to niech bedzie, szczegolnie ze lezy to na przedszkolu.

Zwracaj jednak uwagę na kod jaki dajesz.
nie:POST
a: $_POST

oraz funkcje validateSyntax() i dishtml(). Przedszkolak, ktory znajdzie ten temat zaraz przyleci z tekstem:
a mi nie dziala. Pisze ze nie znalazl funkcji validateSyntax() ...
Rozumiesz do czego zmierzam? Jak juz dajesz kod dla przyszlych pokolen to dawaj go w calosci, lub unikaj "zaawansowanych" funkcji, ktore wykorzystujesz u siebie i nie chcesz podac ich kodu.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 14:00