Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Całościowe filtrowanie danych
Kildyt
post
Post #1





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

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


Cześć! (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

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:
  1. <?php
  2. function filter($give, $type) {
  3.    if (!$type OR is_string($type)) {
  4.        $error = new error;
  5.        
  6.        $error -> show('Nie podałeś typu zmiennej podczas filtrowania danych! 1 - string (tekst), 2 - int (liczba całkowita)', '1');
  7.    }
  8.    
  9.    if ($type == "2") {
  10.        $type = "is_int";
  11.    }
  12.    
  13.    if ($type == "1") {
  14.        $type = "is_string";
  15.    }
  16.    
  17.    
  18.    if ($type($give)) {
  19.        return $give;
  20.    } else {
  21.        $error = new error;
  22.        
  23.        $error -> show('Zawartość zmiennej różni się od jej typu! 1 - string (tekst), 2 - int (liczba całkowita)', '1');
  24.    }
  25. }
  26. ?>


Przykładowe zastosowanie funkcji to:
  1. <?php
  2. $title = filter($_GET['title'], 1);
  3. $id = filter($_GET['id'], 2);
  4. ?>


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ąć?

Ten post edytował Kildyt 4.10.2008, 15:34:51
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
zimi
post
Post #2





Grupa: Zarejestrowani
Postów: 233
Pomógł: 9
Dołączył: 3.06.2007

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


może opisowo
w skrócie... nie ubezpieczasz domu od "kradzieży samochodu", ani samochodu "od katastrof budowlanych"

każda z funkcji którą użyłeś w łańcuchu swoich funkcji służy do innych operacji co już napisałem
jak chcesz wykorzystać dane w zapytaniach do bazy to bierzesz mysql_real_escape_string (i z reguły tylko tą!)
a jak chcesz użyć z polecenia exec, system etc. to używasz escapeshellcmd (i z reguły tylko tą!)
choć jestem sobie w stanie wyobrazić jak tego mógłbym użyć razem to nie ma to większego sensu

"ubezpieczasz" dane w swoim skrypcie od tego od czego są narażone..., a nie od wszystkiego niezależnie czym są i jak używasz...

Jeśli nadal nie rozumiesz to przeczytaj dokumentacje wszystkich funkcji które użyłeś... potem jeszcze raz moje odpowiedzi
a potem ew. przetestuj działanie kodu:
  1. <?php
  2. $zmienna = 'asdf"asdf';
  3. echo $zmienna = mysql_escape_string($zmienna);
  4. echo $zmienna = striplslashes($zmienna);
  5. ?>

i wyciągnij wnioski

Ten post edytował zimi 5.10.2008, 13:32:31
Go to the top of the page
+Quote Post

Posty w temacie


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 Aktualny czas: 14.10.2025 - 16:28