Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Filtrowanie
kleszczoscisk
post 20.03.2010, 17:19:09
Post #1





Grupa: Zarejestrowani
Postów: 164
Pomógł: 3
Dołączył: 13.12.2007

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


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ę \\".
Go to the top of the page
+Quote Post
luck
post 20.03.2010, 17:20:34
Post #2





Grupa: Zarejestrowani
Postów: 317
Pomógł: 58
Dołączył: 6.11.2005

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


Może:


--------------------
Go to the top of the page
+Quote Post
kleszczoscisk
post 20.03.2010, 17:25:49
Post #3





Grupa: Zarejestrowani
Postów: 164
Pomógł: 3
Dołączył: 13.12.2007

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


Dzięki. Krok dalej... smile.gif W zasadzie docelowo to chciałbym wywalić wszystko co nie jest literą, cyfrą lub przecinkiem i kropką.
Go to the top of the page
+Quote Post
luck
post 20.03.2010, 17:31:05
Post #4





Grupa: Zarejestrowani
Postów: 317
Pomógł: 58
Dołączył: 6.11.2005

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


Proszę bardzo:
  1. preg_replace("/[^a-zA-Z0-9.,\s]/", "", $string)


--------------------
Go to the top of the page
+Quote Post
kleszczoscisk
post 20.03.2010, 17:36:37
Post #5





Grupa: Zarejestrowani
Postów: 164
Pomógł: 3
Dołączył: 13.12.2007

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


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

Ten post edytował kleszczoscisk 20.03.2010, 17:43:15
Go to the top of the page
+Quote Post
luck
post 20.03.2010, 17:38:35
Post #6





Grupa: Zarejestrowani
Postów: 317
Pomógł: 58
Dołączył: 6.11.2005

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


Będzie bezpieczne.
PS. Tylko oczywiście w tym konkretnym przypadku zmień $string na $_POST['tytul'] winksmiley.jpg

Ten post edytował luck 20.03.2010, 17:39:49


--------------------
Go to the top of the page
+Quote Post
gothye
post 20.03.2010, 17:44:30
Post #7





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

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


i jeszcze :
addslashes()


--------------------
Nie udzielam pomocy poprzez PW
Go to the top of the page
+Quote Post
kleszczoscisk
post 20.03.2010, 17:52:24
Post #8





Grupa: Zarejestrowani
Postów: 164
Pomógł: 3
Dołączył: 13.12.2007

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


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

Ten post edytował kleszczoscisk 20.03.2010, 18:14:22
Go to the top of the page
+Quote Post
luck
post 20.03.2010, 17:56:36
Post #9





Grupa: Zarejestrowani
Postów: 317
Pomógł: 58
Dołączył: 6.11.2005

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


Patrz post #6.


--------------------
Go to the top of the page
+Quote Post
kleszczoscisk
post 20.03.2010, 18:06:36
Post #10





Grupa: Zarejestrowani
Postów: 164
Pomógł: 3
Dołączył: 13.12.2007

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


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

Ten post edytował kleszczoscisk 20.03.2010, 18:18:35
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 7.07.2025 - 21:11