Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] Przygotowanie danych do wysyłki do BD...
StasiuX
post
Post #1





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 27.07.2007
Skąd: Bytów

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


Witam.

Chce wysłać dane do bazy danych (zmienna np. $tresc_komentarza) i muszę je odpowiednio przygotować, więc pomagam sobie funkcjami:

mysql_real_escape_string()
strip_tags()
nl2br()
wordwrap()

Pytanie rodzi się takie, czy ma znaczenie kolejność zastosowania tych funkcji na zmiennej $tresc_komentarza, a jeśli tak to jaka kolejność będzie dobra? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Z góry dzięki za podpowiedź.

Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
mls
post
Post #2





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

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


Przed zapisem tylko (w tej kolejności):
- strip_tags();
- mysql_real_escape_string();
Go to the top of the page
+Quote Post
StasiuX
post
Post #3





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 27.07.2007
Skąd: Bytów

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


Czyli rozumiem, że funkcje nl2br() i wordwrap() mam zastosować przy odczycie danych z bazy?
Go to the top of the page
+Quote Post
mls
post
Post #4





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

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


Dokładnie tak. I tylko nl2br(). Nie widzę sensu w łamaniu wierszy przez PHP, jeśli to samo może robić przeglądarka. A nawet lepiej.
Go to the top of the page
+Quote Post
phpion
post
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(mls @ 11.02.2009, 23:51:40 ) *
Nie widzę sensu w łamaniu wierszy przez PHP, jeśli to samo może robić przeglądarka. A nawet lepiej.

Chyba nie do końca orientujesz się co robi wordwrap" title="Zobacz w manualu PHP" target="_manual.
Go to the top of the page
+Quote Post
StasiuX
post
Post #6





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 27.07.2007
Skąd: Bytów

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


Cytat(mls @ 11.02.2009, 21:51:40 ) *
Dokładnie tak. I tylko nl2br(). Nie widzę sensu w łamaniu wierszy przez PHP, jeśli to samo może robić przeglądarka. A nawet lepiej.


Wydaje mi się, że sens ma, bo przeglądarka nie "złamie" tekstu ciągłego. Jakkolwiek wielkie dzięki za pomoc.

Pozdrawiam
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


A co jak user bedzie chcial napisac komentarz/notke o tagu <input>?

Co do wordwrap - uzywalbym go przy wyswietlaniu danych - bo niepotrzebnie je "niszczysz" przed zapisaniem do bazy.

Ten post edytował dr_bonzo 11.02.2009, 21:59:46
Go to the top of the page
+Quote Post
StasiuX
post
Post #8





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 27.07.2007
Skąd: Bytów

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


Cytat(dr_bonzo @ 11.02.2009, 21:58:48 ) *
A co jak user bedzie chcial napisac komentarz/notke o tagu <input>?

Co do wordwrap - uzywalbym go przy wyswietlaniu danych - bo niepotrzebnie je "niszczysz" przed zapisaniem do bazy.


strip_tags() zje <input> (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) .

Co do wordwrap() i nl2br() koledzy wyżej mi już objaśnili sprawę (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) .
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


No zje zje, temu lepiej uzyc htmlspecialchars() i zarowno sie zabezpieczysz przed html'em jak i wyswietlisz "<input>"
Go to the top of the page
+Quote Post
StasiuX
post
Post #10





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 27.07.2007
Skąd: Bytów

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


Cytat(dr_bonzo @ 11.02.2009, 22:18:25 ) *
No zje zje, temu lepiej uzyc htmlspecialchars() i zarowno sie zabezpieczysz przed html'em jak i wyswietlisz "<input>"


Ale ja nie chce wyświetlać "<input>", ma je zjeść i tyle na ten temat (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . A funkcją htmlspecialchars() traktuję jeszcze dane wychodzące z bazy.

Cytat(dr_bonzo @ 11.02.2009, 22:18:25 ) *
No zje zje, temu lepiej uzyc htmlspecialchars() i zarowno sie zabezpieczysz przed html'em jak i wyswietlisz "<input>"


A czy htmlspecialchars() stosuje się przed wysłaniem danych do bazy, czy przy odczycie?
Go to the top of the page
+Quote Post
phpion
post
Post #11





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(StasiuX @ 12.02.2009, 10:06:28 ) *
A czy htmlspecialchars() stosuje się przed wysłaniem danych do bazy, czy przy odczycie?

Przy odczycie.
Go to the top of the page
+Quote Post
StasiuX
post
Post #12





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 27.07.2007
Skąd: Bytów

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


Cytat(phpion @ 12.02.2009, 08:33:33 ) *
Przy odczycie.


OK, czyli wyszło na to, że wysyłając dane do bazy filtruje je tylko przy użyciu funkcji mysql_real_escape_string(), a cała reszta ma zastosowanie tylko przy odczycie?

BTW
Czy jest ktoś chętny żeby przetestować mój system komentarzy? Wszystkie chwyty dozwolone (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Linka podeślę na PW.

Pozdrawiam
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #13





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Cytat
A czy htmlspecialchars() stosuje się przed wysłaniem danych do bazy, czy przy odczycie?

Pomysl, dla koncowego usera bedzie to bez znaczenia, bo zamieni < na &lt;
Tylko raz w bazie bedziesz mial orginalny tekst, a raz pozmieniany ta funkcja.
Go to the top of the page
+Quote Post
StasiuX
post
Post #14





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 27.07.2007
Skąd: Bytów

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


Pozwolę sobie odkopać temat, bo mam problem z nim związany. Chodzi o funkcje wordwrap(), która zawija mi każdy wiersz po setnym znaku przy parametrach:

  1. <?php
  2. wordwrap($row['tresc'], 100, "\n", true)
  3. ?>


Problem w tym, że nie chce żeby zawijał się cały tekst, ale tylko wyrazy, które przekraczają 100 znaków. Jest na to jakiś szybki sposób, czy wypada napisać swoją funkcję?

Pozdrawiam
Go to the top of the page
+Quote Post
Spawnm
post
Post #15





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




chyba własna funkcja.
daj np:
explode(' '); i sprawdzasz po kolei każdy wyraz czy ma więcej jak 100 znaków.
Go to the top of the page
+Quote Post
StasiuX
post
Post #16





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 27.07.2007
Skąd: Bytów

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


Tak też zrobię. Dzięki za odp.

Pozdrawiam

Napisałem własną funkcję łamiącą tylko za długie wyrazy, nie cały tekst. Pewnie można lepiej, ale działa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Jakby co proszę o poprawki.

  1. <?php
  2. function wrap_long_word($text, $how_long) {
  3.  $words = strtok($text, " \n\t");
  4.  
  5.  if (strlen($words) > $how_long) {
  6.    $too_long[] = $words;
  7.  }
  8.  
  9.  while ($words !== false) {
  10.    $words = strtok(" \n\t");
  11.    if (strlen($words) > $how_long) {
  12.      $too_long[] = $words;
  13.    }
  14.  }
  15.  
  16.  for ($x = 0, $cnt = count($too_long); $x < $cnt; $x++ ) {
  17.    $wrap = utf8_wordwrap($too_long[$x], $how_long, "\n", true);
  18.    $broken[] = $wrap;
  19.  }  
  20.  
  21.  $text_fix = str_replace($too_long, $broken, $text);
  22.  return $text_fix;
  23. }
  24. ?>


Pozdrawiam

Ten post edytował StasiuX 27.02.2009, 09:38:06
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: 23.08.2025 - 12:55