Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ta sama pętla w funkcji i poza nią
Forum PHP.pl > Forum > PHP
IceManSpy
Witam

Mam taką pętlę, która jest gdzieś w kodzie:
  1. foreach($tab as $key => $wart)
  2. {
  3. $tab[$key] = trim(htmlspecialchars(addslashes($tab[$key])));
  4. }
Wszystko działa super. Dodaje ukośniki i w przypadku JS zamienia na encję. Tablica na której to testuje to:
  1. $tab = array('imie' => "Te'st" , 'nazwisko' => 'Nowak' , 'skrypt' => '<script>alert(123);</script>');
Po print_r (bezpośrednio w kodzie) dostaję:
  1. Array ( [imie] => Te\'st [nazwisko] => Nowak [skrypt] => <script>alert(123);</script> )
Jednak kiedy zapiszę to jako funkcję, to htmlspecialchars nie działa:
  1. function Tabliczka($tablica)
  2. {
  3. foreach($tablica as $key => $wart)
  4. {
  5. $tablica[$key] = trim(htmlspecialchars(addslashes($tablica[$key])));
  6. return $tablica;
  7. }
  8. }
  9. $tab = Tabliczka($tab);
to print_r pokazuje mi:
  1. Array ( [imie] => Te\'st [nazwisko] => Nowak [skrypt] => )
Czyli dodaje slasha, ale htmlspecialchars nie działa. Nawet jeśli przekażę przez referencję:
  1. function Tabliczka(&$tablica)
  2. {
  3. foreach($tablica as $key => $wart)
  4. {
  5. $tablica[$key] = trim(htmlspecialchars(addslashes($tablica[$key])));
  6. return $tablica;
  7. }
  8. }
  9. $tab = Tabliczka($tab);
I zrobię print_r:
  1. Array ( [imie] => Te\'st [nazwisko] => Nowak [skrypt] => )
To sytuacja się powtarza co wcześniej.
Jak to rozwiązać?
Wicepsik
postaw return za pętlą
IceManSpy
No tak, taki błąd -.- Wielki dzięki
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.