Cytat(nospor @ 30.09.2011, 15:12:02 )

Mogę też usuwać złe dane przed włożeniem do bazy. Nie ma problemu. Ale do zabezpieczenia przed sqlinjection służy mysql_escape_string a nie filter_var.
A niby dlaczego nie filter_var ? podaj argument? "bo tak" nigdy mnie nie przekonywało. filter_var jest całkiem nowe PHP 5.2 także specjalnie o nim informacji jeszcze nie ma.
Cytat(nospor @ 30.09.2011, 15:12:02 )

Wyobraź sobie, że wkładasz do bazy tekst blabla"coswcudzyslowiu"blabla. Teraz robisz wyszukiwanie, ale ktoś szuka właśnie "coswcudzyslowiu".
I co? I nie znajdzie tego u Ciebie, bo ty zamieniasz cudzysłowia na encje. By napisać teraz poprawnie działającą wyszukiwarkę, musisz bawić się w zamienianie w locie.
no to jak w zapytaniu porównującym też zastosujesz
filter_var to chyba porówna ze sobą te same encje prawidłowo co?
Cytat(nospor @ 30.09.2011, 15:12:02 )

Inna sytuacja, masz pole w tabeli, w które możesz wstawić z jakiś powodów powiedzmy 3 znaki. Ktoś daje tekst "al i już al mu się nie wstawi, bo ty cudzysłów zamieniłeś na encję, która zjada całe dostępne miejsce.
skoro jest to niedozwolony znak to po co go tam wstawił? gdyby był niedozwolony, to wcześniej mogę sprawdzić przy pomocy preg_match i też będzie ok?
Cytat(nospor @ 30.09.2011, 15:12:02 )

Poza tym tak czy siak przed wyświetleniem danych userowi należy uzywać htmlspiecialchars, nawet jak ty to już do bazy wkładasz w takiej postaci, bo nigdy nie znasz dnia ani godziny jak ktoś ci zmodyfikuje wpisy w bazie i bedziesz miał duuuzy problem z XSS.
Teraz robiąc encje raz przed włożeniem do bazy, drugi raz po wyjęciu nagle na stronie widać encje a nie znaki.
że niby co?