Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] nl2br, mysql_real_escape_string, strip_tags
Forum PHP.pl > Forum > Przedszkole
in5ane
Witam, jak mam zrobić, żeby działały mi funkcje zabezpieczające, ale tekst był również z enterami? Poniżej mój kod:
  1. <?php
  2. $tresc_dowcipu = $_POST['tresc_dowcipu'];
  3. $tresc_dowcipu = nl2br(mysql_real_escape_string(strip_tags($tresc_dowcipu)));
  4. ?>

Prawdopodobnie gryzą się, gdyż po wyświetleniu jest bez enterów.
P.S.: W bazie jest jednak jakby z enterami (w phpMyAdmin), to może wina jednak leży w czymś innym?

Z góry dziękuje za pomoc.
mecenas
nie wiem czy to istotne, ale ja to robię zawsze odwrotnie (tj. mysql_real_escape_string(nl2br($string))) i dotychczas nie miałem problemów smile.gif wiem, że to może być nieistotne, ale... może akurat być? php to dziwna język winksmiley.jpg mysql tez dziwna baza winksmiley.jpg
nexis
  1. <?php
  2. $tresc_dowcipu = $_POST['tresc_dowcipu'];
  3. $tresc_dowcipu = strip_tags($tresc_dowcipu);
  4. $tresc_dowcipu = nl2br($tresc_dowcipu, true);
  5. $tresc_dowcipu = mysql_real_escape_string($tresc_dowcipu);
  6. ?>
bartg
Dodam, ze lepiej jest nl2br dac jak ściągasz dane smile.gif
legorek
Cytat(bartg @ 23.01.2009, 22:16:53 ) *
Dodam, ze lepiej jest nl2br dac jak ściągasz dane smile.gif

Tak i przy każdym wyświetleniu strony przez użytkownika ta funkcja będzie wywoływana, zamiast tylko raz przy dodawaniu danych. Bez sensu. Może nl2br nie jest jakąś bardzo zasobożerną funkcją, ale warto mieć dobre nawyki.
in5ane
Cytat(nexis @ 23.01.2009, 21:54:49 ) *
  1. <?php
  2. $tresc_dowcipu = $_POST['tresc_dowcipu'];
  3. $tresc_dowcipu = strip_tags($tresc_dowcipu);
  4. $tresc_dowcipu = nl2br($tresc_dowcipu, true);
  5. $tresc_dowcipu = mysql_real_escape_string($tresc_dowcipu);
  6. ?>


Warning: Wrong parameter count for nl2br() in /home/kondom/domains/dancepiotrkow.pl/public_html/dowcipy.php on line 111

111 linia to ta z nl2br.., więc jak mam rozwiązać ten problem?


@edit:
Dziękuję bardzo za pomoc, wystarczyło usunąć true.
legorek
Drugi parametr dla nl2br jest dostępny od PHP 5.3.0.
Pilsener
1. Zanim użyjesz mysql_real_escape_string sprawdź, czy serwer nie dodaje sleszy automatycznie
2. Zamiana znaków nowej linii i wycinanie kodu html powinno zależeć od elementu tablicy, z której pobierasz te dane - napisz prostą klasę/funkcję walidującą, która będzie walidowała dane w zależności od podanych parametrów (typu czy jest to textarea, czy trzeba wyciąć html i czy należy zamienić znaki nowej linii na <br /> etc.)

Nie ma jednej, uniwersalnej recepty na walidację - musisz używać tego, co w danym momencie jest potrzebne. O logicznej kolejności (typu najpierw zamiana nowej linii na <br />, a później wycięcie tagów html) chyba nie musimy pisać?
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.