Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Jedna funkcja używana dla wielu zmiennych.
torbicki65
post
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 8.11.2008

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


Witam
Jeśli mam np. dużo zmiennych z jakiegoś formularza i każdą z nich chcę przepuścić przez htmlspecialchars, to czy jest jakiś sposób, żeby zapisać to w jak najkrótszej postaci, czy muszę za kazdym razem pisać htmlspecialchars($kolejnazmienna); ?
pozdrawiam
Go to the top of the page
+Quote Post
plurr
post
Post #2





Grupa: Zarejestrowani
Postów: 175
Pomógł: 12
Dołączył: 28.06.2007
Skąd: Bytom

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


możesz do funkcji przekazać tablicę, a w funkcji sparsować wszysystkie zmienne z użyciem foreach
Go to the top of the page
+Quote Post
erix
post
Post #3





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




array_map" title="Zobacz w manualu PHP" target="_manual, nie trzeba żadnych tasiemców pisać.
Go to the top of the page
+Quote Post
230005
post
Post #4





Grupa: Zarejestrowani
Postów: 316
Pomógł: 36
Dołączył: 2.04.2008

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


No możesz zrobić np tak:

Kod
//zakłada że używasz POST?
  
  foreach($_POST as &$wartosc)
    $wartosc = htmlspecialchars($wartosc);


Ampersand ( & ) przed zmienną $wartosc to referencja. Zrobiłem tak dlatego, że $wartosc jest kopią tablicy $_POST. Jeśli chcesz żeby wewnątrz pętli foreach coś się w niej zmieniło musisz użyć właśnie referencji - & . Minus takiego rozwiązania objawi się najprawdopodobniej jeśli użyjesz metody GET. Wtedy pętla przetworzy nawet to czego byś nie chciał (np. jakieś zmienne przekazywane w url, a nie pochodzące z formularza...) .

Ten post edytował 230005 31.01.2009, 17:57:33
Go to the top of the page
+Quote Post
Pax95
post
Post #5





Grupa: Zarejestrowani
Postów: 50
Pomógł: 7
Dołączył: 31.01.2009

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


Albo tak jak powiedział erix w praktyce:
  1. <input type="text" name="data[name]"><br>
  2. <input type="text" name="data[surname]">
  3. (...)

  1. <?php
  2. function protect( $input )
  3.   return htmlspecialchars( $input );
  4. $finalVarible = array_map( 'protect', $_POST['data'] );
  5. ?>


Ten post edytował Pax95 31.01.2009, 19:14:11
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ale kombinujesz. ;P Przecież wbudowaną funkcję interpretera też można podać jako pierwszy argument. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

  1. <?php
  2. $_POST = array_map('htmlspecialchars', $_POST);
  3. ?>
Go to the top of the page
+Quote Post
Pax95
post
Post #7





Grupa: Zarejestrowani
Postów: 50
Pomógł: 7
Dołączył: 31.01.2009

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


Rzeczywiście, nie pomyślałem : D. Ale jak się wykonuje więcej akcji, to to jest dobre rozwiązanie ^^

Ten post edytował Pax95 31.01.2009, 21:22:41
Go to the top of the page
+Quote Post
torbicki65
post
Post #8





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 8.11.2008

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


Cytat(erix @ 31.01.2009, 20:43:41 ) *
Ale kombinujesz. ;P Przecież wbudowaną funkcję interpretera też można podać jako pierwszy argument. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

  1. <?php
  2. $_POST = array_map('htmlspecialchars', $_POST);
  3. ?>


Dziękuję, to chyba rzeczywiście najlepsze rozwiązanie dla formularza (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
pozdrawiam
Go to the top of the page
+Quote Post

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: 22.08.2025 - 17:35