Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> OO,bazy danych, smarty, bezpieczeństwo, czyli co jeść czym..
Arkon
post 23.12.2004, 12:05:16
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 12.02.2004

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


Witam.
Wcześniej pisałem strukturalnie, teraz doszedłem do wniosku, że mój kod jest tak zabałaganiony iż każda zmiana trwa długooo a wszystkie inne osoby modyfikujące kod z pewnośćia kierują w moją strone różne niemiłe epitety winksmiley.jpg
Wcześniej uważałem że OO to przerost formy nad treścią ale teraz gdy serwis staje się coraz bardziej rozbudowany a OO taakkiee modne cool.gif postanowiłem o tym przeczytać. Okazało się całkiem sympatycznie. To zabieram sie za to! I...
Poniżej przedstawiam liste pytań, które mnie nurtują, jeśli możecie odpowiadajcie jak najbardziej lopatologicznie, podajcie linki z ciekawymi wiadomościami lub chociaż słowa które mogę przegooglowac. Nie wszystkie dotyczą OO ale jak już sie brać za przepiswyanie kodu to w całości i ładnie( i po co zaśmiecać forum smile.gif ). Niektórym osobom problemy mogą wydawać się oczywiste ale dla mnie nie są wiec nie piszcie "poszukaj sobie" smile.gif

1. Postanowiłem podzielić struktóre mojej strony na 3 główne klasy:
a ) DB - czyli baza danych
- pobieranie z MySql informacji i zwracanie ich w postaci klasy Danetowa
- zapisywanie do bazy
- kasowanie z bazy
- updatowanie bazy
b ) Dane - wszystkie które sa pobierane z DB (artykuly, newsy itp...)
- opcje do wyswietlania
- modyfikowania wewnatrz ( by nastenie przekazac do DB i updatowac)
c ) Users - rozszerzenie Dane o mechanizmy sesji

Czy takie "rozplanowanie" jest dobre? Czego brakuje? Co zmienić?

2. Klasa DB (w tej chwili tylko do wyciagania rekordow):
  1. <?php
  2.  
  3. // Klasa obslugujaca bazy danych
  4. class DB
  5. {
  6.  //Tu mozna modyfikowac zmienne potrzebne do laczenia
  7.  protected $db_name = &#092;"xxx\"; //nazwa bazy
  8.  protected $host = &#092;"localhost\"; //host
  9.  protected $login = &#092;"yyy\"; // username
  10.  protected $pass = &#092;"zzz\"; // haslo
  11.  //Koniec modyfikowania
  12.  protected $co_pobrac = '*';
  13.  protected $laczenie, $db;
  14.  protected $zapytanie, $result;
  15.  protected $ile_wynikow;
  16.  
  17. function polacz(){
  18. $this->laczenie = @mysql_connect($this->host, $this->login, $this->pass) or die(&#092;"Nie udalo sie polaczyc\");
  19. $this->db = @mysql_select_db($this->db_name, $this->laczenie) or die(&#092;"Nie udalo sie wybrac bazy\");
  20. }
  21.  
  22. function zapytanie($table_name, $szukamy){
  23. $this->ile_wynikow = 0;
  24. if($szukamy instanceof Dane){
  25. $this->zapytanie = &#092;"SELECT $this->co_pobrac FROM $table_name WHERE $szukamy->pobierzListeDanych()\"; 
  26. }else{
  27. $this->zapytanie = &#092;"SELECT $this->co_pobrac FROM $table_name WHERE $szukamy\"; 
  28. }
  29. $this->result = mysql_query($this->zapytanie, $this->laczenie);
  30. $this->ile_wynikow = mysql_num_rows($this->result);
  31. }
  32.  
  33. function pobierz() {
  34. if ($this->ile_wynikow){
  35. return new Dane(mysql_fetch_array($this->result));
  36. } else {
  37. return false;
  38. }
  39.  echo &#092;"$this->ile_wynikow--\";
  40. }
  41.  
  42. }
  43. ?>

Jak łatwo się domyślacie nie działa. Raz, że nie zwraca rekordów a 2 że
while ($baza->pobierz()) trwa w nieskończoność.
Wiem, że istenieją gotowe klasy do obsługi az danych ale ja upieram sie przy swojej.

3. Bezpieczeństwo:
Czy tablice $get, $post, $session są wystarczająco bezpieczne? Czy istnieją jeszcze jakieś inne metody pozwalające jeszcze podnieść stopień bezpieczeństwa? Jakie?

4. Szablony:
Który system wybrać? Swojego nei będę pisał (na razie biggrin.gif), przychylam się do smarty ale chciałbym się dowiedzieć czegoś więcej (najlepiej po polsku) Bardzo prosze o linki..

5. Adres:
Najlepszy sposob zamiany adresu np.
index.php?imie=Adam&nazwisko=Kowalski
na
index.php/Adam/Kowalski

To chyba jak na razie wszystko, jeśli mi się coś przypomni to będę dopisywał smile.gif
Może warto przykleić gdzieś topic z wybranymi zagadnieniami ładnie omówionymi bo myślę, że wiele osób boryka się z podobnymi problemami.
Pozdrawiami
P.S.
Jesteś wyjątkowo wytrwały, że przeczytałeś moje brednie do końca biggrin.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
DeyV
post 23.12.2004, 14:26:32
Post #2





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




1. jeśli chcesz aplikacje zaprojektowac w sposóbn ciekawy i przejżysty - zapoznaj się z ostatnio modnym u nas tematem MVC . W tej chwili nie znam lepszego sposobu na zorientowanie budowy aplikacji webowej.

2. nie rozumiem do czego dążysz.
Uważąm, że jakaś warstwa pośrednia, pozwalajaca na uniknięcie pisania mysql_ * jest potrzebna

3. jeśli masz register_globals =off i używasz tablic superglobals do tego, do czego są przeznaczone, to wszystko będzie OK, jeśli nie zapomnisz o walidacji wszystkich danych pochodzących od usera.

4. Ja lubię smarty, choć są szybsze rozwiazania

5. jest art na wortalu

ps. czytywałem gorsze tongue.gif


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
Arkon
post 23.12.2004, 15:43:39
Post #3





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 12.02.2004

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


Dzieki za odpowiedzi
ad 1
Tez o tym czytałem ale przyznam sie szczerze nie nie wiem jak "oddielic" te trzy warstwy? I w jaki sposob to ma byc porozkładane

ad 2.
To jak to mam rozwiazac? Chcialem to napisac w ten sposob zeby mozna bylo wyciagac dowolna ilosc rekordow, np tak:
  1. <?php
  2. $baza = new DB;
  3. $baza->polacz();
  4. $baza->zapytanie(&#092;"news\", \"news_specjalny = 1\");
  5. while ($baza->pobierz()){
  6. echo &#092;" To jest tytul newsa: $newsy->news_tytul <br />\";
  7. }
  8. ?>


ad 4
Jakie? Mozesz podac jakies www na ktorym moglbym poczyta o smarty? Jak to sie je?
Go to the top of the page
+Quote Post
hamlecik
post 23.12.2004, 16:14:31
Post #4





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 31.07.2003

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


Arkon: na forum jest bardzo duzo postow na temat Smarty. http://smarty.php.net/ - dokumentacja + forum z cala masa informacji.


--------------------

Yamaha YZF R1
Go to the top of the page
+Quote Post
bela
post 23.12.2004, 17:50:49
Post #5


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

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


Ad ad 1
to proste winksmiley.jpg, piszesz klase kontrolera, która pobiera z konfiga wszystie dane o akcjach, na podstawie konfigu i danych ( _GET, _POST, _SESSION etc ) kontroler wybiera jaką akcje uruchomic, akcja wywoluje model z ktorego pobiera dane i dalej wszystko jest pakowane do widoku

ja rozdzielam przez katalogi ( actions, models, views winksmiley.jpg )


--------------------
Go to the top of the page
+Quote Post
Arkon
post 23.12.2004, 23:10:19
Post #6





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 12.02.2004

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


bela_666 : Ok wszystko ladnie pieknie ale jak to zrobic? Moge prosic jakis banalny przyklad obrazujacy co i jak? biggrin.gif
Go to the top of the page
+Quote Post
bela
post 23.12.2004, 23:31:48
Post #7


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

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


dostaniesz pseudokod :]

very simple mvc app tongue.gif

Controller :
1. pobierz dane o widokach i akcji z ConfigParsera
2. pobierz dane o widoku i akcji z Routera
3. uruchom akcje albo wyrzuc wyjatek ( blad )

Akcja:
1. pobierz dane z modelu
2. zrob cos z nimi
3. zwroc je do kontrolera
// end action

4. pobierz dane z akcji
5. utworz widok
6. wrzuc do niego dane

Widok
1. pobierz dane z kontrolera
2. uruchom np. Smarty albo OPT ( najnowsza wersja na cvs, ale chyba na stronce tez jest aktualna )
3. wyrzuc output

proste winksmiley.jpg wszystko mozna wyczytać, mi jeszcze pomogla analiza kodu Phienda winksmiley.jpg

Ten post edytował bela_666 23.12.2004, 23:33:08


--------------------
Go to the top of the page
+Quote Post
Arkon
post 23.12.2004, 23:38:19
Post #8





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 12.02.2004

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


Ok wielkie dzieki. Tylko o ile reszta wydaje się w miare OK to dzialanie kontrolera a dokladnie pierwszych 2 punktow jest jakos dla mnie zagmatwane. Cos mi podpowiada ze nie jest to trudne ale hmm.. Mozesz to jakos rozwinac?
Go to the top of the page
+Quote Post
bela
post 23.12.2004, 23:43:40
Post #9


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

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


tu masz moj parser http://forum.php.pl/index.php?showtopic=24090
a Router to cos takiego co parsuje adres, czyli wspomaga Przyjazne URLe ( na wortalu art scannera ) i nie musisz jak tam bawic sie z tablicą tylko dajesz getAction, getView getParam(1) i dostajesz co chcesz smile.gif

aha, ten model mvc jest baaaaaardzo tongue.gif uproszczony, polecam dokumentacje do phienda, ewentualnie dokumentacje strutsa ( tam tez fajnie pisza, duzo sie z tamtad dowiedzialem ) i jeszcze w okolicach WACT tez jest troche


--------------------
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 04:55