Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Filtrowanie
Forum PHP.pl > Forum > Przedszkole
kleszczoscisk
Witam i proszę o poradę.
Na stronie, po zalogowaniu użytkownik dodaje tre¶ci, między innymi tytuł swojej publikacji. Wiecznym problemem s± ludzie, którzy wpisuj± mimo pró¶b wszystkie możliwe rodzaje cudzysłowów, my¶lników i innych znaków. Moje pytanie brzmi: czy jest jaka¶ fajna uniwersalna funkcja filtruj±ca dane z formularza przed dodaniem do MySQL pod k±tem niepoż±danych znaków (spoza a-z±ćęłńó¶ĽżA-ZˇĆĘŁŃÓ¦¬Ż0-9) jak i bezpieczeństwa ?
Póki co robię tak:
  1. if (isset($_POST['tytul'])) {
  2. $tytul = trim($_POST['tytul']);
  3. $tytul = str_replace('-','–',$tytul);
  4. $tytul = str_replace("'","’",$tytul);
  5. $tytul = mysql_real_escape_string($tytul);
  6. }

Słabo to działa ponieważ zamiast cudzysłowu dostaję \\".
luck
Może:
kleszczoscisk
Dzięki. Krok dalej... smile.gif W zasadzie docelowo to chciałbym wywalić wszystko co nie jest liter±, cyfr± lub przecinkiem i kropk±.
luck
Proszę bardzo:
  1. preg_replace("/[^a-zA-Z0-9.,\s]/", "", $string)
kleszczoscisk
oo, czadzik, dzięki...
Czyli takie filtrowanie:
  1. if (isset($_POST['tytul'])) {
  2. $tytul = mysql_real_escape_string(preg_replace("/[^a-zA-Z0-9., \s]/", "", $tytul));
  3. }

... będzie również bezpieczne przed dodaniem do bazy ?

edit: poprawione, jeszcze raz dzięki smile.gif
luck
Będzie bezpieczne.
PS. Tylko oczywi¶cie w tym konkretnym przypadku zmień $string na $_POST['tytul'] winksmiley.jpg
gothye
i jeszcze :
addslashes()
kleszczoscisk
Jakis problem jest...
  1. if(isset($_POST['tytul'])) {
  2. //$tytul = preg_replace("/[^a-z±ćęłńó¶ĽżA-ZˇĆĘŁŃÓ¦¬Ż0-9., /s]/", "", $tytul);
  3. $tytul = preg_replace("/[^a-z±ćęłńó¶ĽżA-ZˇĆĘŁŃÓ¦¬Ż0-9.,\s]/", "", $tytul);
  4. $tytul = mysql_real_escape_string($tytul);
  5. }


Ten kod całkowicie zjada zawartosc zmiennej $tytul. Co jest nie tak ?

EDIT: poprawiłem uko¶nik w \s
luck
Patrz post #6.
kleszczoscisk
Nazwę zmiennej poprawiłem ale to nie to. Spację w wyrażeniu regularnym też (jak doczytałem, że \s oznacza wła¶nie spacje).

Już działa pięknie, dzięki za pomoc smile.gif
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.