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
cinekz
post
Post #2





Grupa: Zarejestrowani
Postów: 50
Pomógł: 6
Dołączył: 15.06.2006

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


Kod był pisany na szybko, więc błędy w nim się mogły pojawić, to raz. Dwa, kod był tylko i wyłącznie w celu pokazania idei OOP oraz dziedziczenia, ponieważ autor pytał się czy idzie w dobrą stronę. Też nie jestem zwolennikiem takich rozwiązań, ponieważ po prostu filtruje to co mi potrzeba w danych narzędziach. Jeśli chodzi o set/get i prywatność składowych, to jeżeli stosujemy set to mamy pewność jaki typ znajduje się w składowej oraz nikt niepowołany nie użyje jej w nieodpowiedni sposób.

To taki mój lekki wywód na post Sedziwoj'a, ale myślę, że był potrzebny, aby rozjaśnić sytuację.

Dziękuję za krytykę i pozdrawiam - Marcin.

Ten post edytował cinekz 27.02.2008, 15:22:31
Go to the top of the page
+Quote Post
Sedziwoj
post
Post #3





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

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


Cytat(cinekz @ 27.02.2008, 15:20:56 ) *
Jeśli chodzi o set/get i prywatność składowych, to jeżeli stosujemy set to mamy pewność jaki typ znajduje się w składowej oraz nikt niepowołany nie użyje jej w nieodpowiedni sposób.


Chyba nie do końca mnie zrozumiałeś, po prostu moim zdaniem klasa nie musi mieć żadnych właściwości (atrybutów/pól/składowych), bo przetwarza dane na bieżąco.
Czyli metoda która przyjmuje, weryfikuje, filtruje i zwraca przefiltrowane dane (oczywiście można wykorzystać, a nawet lepiej Compose Method... aby sama metoda nie robiła wszystkiego).
Ale dla użytkownika daje to ułatwienie użytkowania.
Bo przecież nie atakowałem idei set/get dla właściwości obiektu, było by to śmieszne skoro jestem tego zwolennikiem (raczej wolę sformalizowane działania)
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: 17.10.2025 - 22:16