Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [OOP] Klasa do filtrowania tekstu
_olo_1984
post
Post #1





Grupa: Zarejestrowani
Postów: 289
Pomógł: 77
Dołączył: 5.08.2006

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


Witam

napisałem taką oto klasę, do filtrowania tekstu. W związku z tym, że dopiero zaczynam zabawę z OOP (w strukturalnym radzę sobie całkiem dobrze i czas podnieść poprzeczkę) mam do Was następujące pytania:
1. Czy klasa którą napisałem to nie pseudo oop? czy tak to powinno wyglądać (czy dobrze kombinuje)
2. Czy filtrowanie danych wchodzących do bazy (tryb 1) jest dobrym zabezpieczeniem przed atakami?
3. Już poza tym tematem, chodzi o smarty (z których tez korzystam), jak w innym obiekcie moge urzyć smarty, oraz jak w pliku inkludowanym urzyć smarty np. mam w głównym katalogu index.php (tu smarty działa ok), ale dołanczam do indexa plik z katalogu /includes/1.php i w tym pliku 1.php gdy prubuję uzyc szablonu, to nie działa (nie dolancza plikow tpl). smarty dolanczam w index. a po nim ten plik 1.php (mam nadzieje ze nie zamieszalem).

poniżej kod:

  1. <?php
  2.  
  3. class text {
  4. private $zakazane = array("script", "SCRIPT",
  5.  "type", "TYPE",
  6.  "name", "NAME",
  7.  "union", "UNION",
  8.  "select", "SELECT",
  9.  "delete", "DELETE",
  10.  "modify", "MODIFY",
  11.  "show", "SHOW",
  12.  "NULL", "null", "NUL", "nul",
  13.  "<", ">", "'", "/", " ", "&", "%", ";", ":", "*", "&", "?");
  14. public $tekst;
  15. public $zmieniony;
  16. public function filter($tryb) {
  17. switch($tryb) {
  18. case '1':
  19. return $this->zmien_tekst_1();
  20. break;
  21.  
  22. case '2':
  23. return $this->zmien_tekst_2();
  24. break;
  25.  
  26. case '3':
  27. return $this->zmien_tekst_3();
  28. break;
  29. }
  30. }
  31. private function show_tekst() {
  32. echo $this->zmieniony;
  33. }
  34. private function zmien_tekst_1() {
  35. $this->zmieniony=str_replace($this->zakazane, "", strip_tags($this->tekst));
  36. return $this->show_tekst();
  37. }
  38. private function zmien_tekst_2() {
  39. $this->zmieniony=stripslashes($this->tekst);
  40. return $this->show_tekst();
  41. }
  42. private function zmien_tekst_3() {
  43. $this->zmieniony=htmlentities($this->tekst);
  44. return $this->show_tekst();
  45. }
  46. }
  47. $text=new text;
  48. ?>


pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Sedziwoj
post
Post #2





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


@cinekz
Tak z ciekawości po co set/get?
Przy Twoim pomyśle organizacji wystarczy przecież metoda np. filter() która pobiera wartość i ją od razu zawraca, bo jak stosujesz filtr to najczęściej od razu chcesz mieć dane.
Do tego przekazywanie przez konstruktor, jest dziwne, ogólnie to raczej powinny być statyczne metody, bo skoro nie konfigurujemy takich filtrów dynamiczne tworzenie obiektów jest zbędne.

No i w przykładzie jest błąd, bo setValue() też powinna $this->run(), aby nowa wartość była przefiltrowana i jak null, to przypisz null, a nie nic nie rób, bo ktoś przypisze null, a dostanie w zwrocie poprzednią wartość.

No i jest jak napisał Cysiaczek, tego sie raczej nie pisze bo zawsze jest zaszyte w narzędzia z których się normalnie korzysta. A najlepiej jak są odpowiednio wbudowane w nie, bo to wtedy ułatwia, a taka ogólna klasa to tylko ładnie opakowuje jedynie.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 18.10.2025 - 11:24