
Piszę aktualnie nowe jądro i chcę przy użyciu jeden funkcji przefiltrować dane pod wieloma względami (html, mysql itp.).
Poczytałem trochę na w internecie o filtrowaniu danych, nawet znalazłem bardzo prosty i zrozumiały wykres: link w .pdf.
Napisałem funkcję filter i wygląda ona tak:
<?php function filter($give, $type) { $error = new error; $error -> show('Nie podałeś typu zmiennej podczas filtrowania danych! 1 - string (tekst), 2 - int (liczba całkowita)', '1'); } if ($type == "2") { $type = "is_int"; } if ($type == "1") { $type = "is_string"; } $give = stripslashes(escapeshellcmd(strip_tags(htmlspecialchars(mysql_real_escape_string(urlencode($give)))))); if ($type($give)) { return $give; } else { $error = new error; $error -> show('Zawartość zmiennej różni się od jej typu! 1 - string (tekst), 2 - int (liczba całkowita)', '1'); } } ?>
Przykładowe zastosowanie funkcji to:
<?php $title = filter($_GET['title'], 1); $id = filter($_GET['id'], 2); ?>
Spis zastosowanych funkcji do przefiltrowania zmiennej (w kolejności zastosowania): stripslashes, escapeshellcmd, strip_tags, htmlspecialchars, mysql_real_escape_string, urlencode.
Jak myślicie, czy ten skrypt jest poprawny? Zmienić szereg wykonywanych funkcji, może jakąś dodać, lub usunąć?