Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Oceńcie czy kod jest ok
marekc12
post
Post #1





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 1.08.2008

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


  1. <?php
  2. class bazaDanych
  3.    {
  4.        private $serwer, $nazwa, $uzytkownik, $haslo, $idPolaczenia, $wynikZapytania;
  5.        
  6.        function __construct( $serwer, $nazwa, $uzytkownik, $haslo )
  7.        {
  8.            $this->serwer = $serwer;
  9.            $this->nazwa = $nazwa;
  10.            $this->uzytkownik = $uzytkownik;
  11.            $this->haslo = $haslo;
  12.            
  13.            $this->idPolaczenia = mysql_connect( $this->serwer, $this->uzytkownik, $this->haslo );
  14.            if( !$this->idPolaczenia )
  15.                $this->blad();
  16.  
  17.            $dbSelected = mysql_select_db( $this->nazwa, $this->idPolaczenia );
  18.            if( !$dbSelected )
  19.                $this->blad();
  20.        }
  21.  
  22.        function __destruct() {
  23.            mysql_close( $this->idPolaczenia );
  24.        }
  25.        
  26.        function modyfikujBaze( $trescZapytania )
  27.        {
  28.            $this->wynikZapytania = mysql_query( $trescZapytania, $this->idPolaczenia )
  29.            or $this->blad( $trescZapytania );
  30.        }
  31.        
  32.        function czytajBaze( $trescZapytania )
  33.        {
  34.            $this->modyfikujBaze( $trescZapytania );
  35.            
  36.            while ($row = mysql_fetch_array( $this->wynikZapytania ))
  37.                $table[] = $row;
  38.            
  39.            return $table;
  40.        }
  41.  
  42.        private function blad( $trescZapytania ) {
  43.            die( mysql_errno( $this->idPolaczenia ) . ': ' . mysql_error( $this->idPolaczenia ) );
  44.        }
  45.    }
  46.  
  47.    class uzytkownik
  48.    {
  49.        private $bazaDanych, $id, $uprawnienia, $login, $haslo, $imie;
  50.        
  51.        function __construct( $bazaDanych, $id, $uprawnienia, $login, $haslo, $imie )
  52.        {
  53.            $this->bazaDanych = $bazaDanych;
  54.            $this->id = $id;
  55.            $this->uprawnienia = $uprawnienia;
  56.            $this->login = $login;
  57.            $this->haslo = $haslo;
  58.            $this->imie = $imie;
  59.        }
  60.        
  61.        function dodaj() {
  62.            $this->bazaDanych -> modyfikujBaze( "INSERT INTO users (id, rights, login, pass, name) VALUES ('', '$this->uprawnienia', '$this->login', '$this->haslo', '$this->imie')\" );
  63.        }
  64.        
  65.        function usun() {
  66.            $this->bazaDanych -> modyfikujBaze( "DELETE FROM users WHERE id=$this->id&#092;" );
  67.        }
  68.  
  69.        function edytuj() {
  70.            $this->bazaDanych -> modyfikujBaze( "UPDATE users SET rights='$this->uprawnienia', login='$this->login', pass='$this->haslo', login='$name->imie' WHERE id=$this->id\" );
  71.        }
  72.        
  73.        function wczytajPozycje() {
  74.            return $this->bazaDanych -> czytajBaze("SELECT * FROM users WHERE id=$this->id&#092;" );
  75.        }
  76.    }
  77. ?>

  1. <?php
  2. $mySql = new bazaDanych( 'localhost', 'lala', 'asdas', 'asdkl' );
  3. $osoba = new uzytkownik( $mySql, null, 1, 'login123', 'mojehaslo', 'marek' );
  4. $osoba -> dodaj();
  5. ?>


Czy ten kod jest dobry? Uczę się obiektowości i zastanawiam się czy dobrze to napisałem. Baze danych zrobiłem jedną klasą, użytkownika drugą, to chyba jest dobrze. Tylko nie wiem czy dobrze to rozwiązałem, że do klasy użytkownik przekazuję obiekt bazy danych. Proszę, napiszcie mi co myślicie o tym kodzie, czy mogę pisać dalej, czy może to jest w ogóle bez sensu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Nie chodzi mi o idealny sposób na zapis tego kodu(każdy z Was pisze troszeczkę inaczej), tylko o to czy mogę to rozwiązać tak jak to zrobiłem, czy mój sposób nie kłóci się z zasadami programowania obektowego.

pozdrawiam!

Ten post edytował erix 12.06.2009, 14:13:14
Powód edycji: [erix] przeniosłem
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
marekc12
post
Post #2





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 1.08.2008

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


ok, dzięki za rady (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Co do nazewnictwa to wiem, że może jest trochę śmieszne, ale myślę, że lepiej jest się odnaleźć w kodzie, jeżli używa wymyślonych przez samego siebie nazw.

Poprawiłem(jeszcze mialem wrzucic wyjątki o których pisał em1X) klasę do bazy i obsługi użytkowników, zapewne nie jest idealna, ale wrzucam ją tu, może akurat komuś się przyda (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ) Pozdrawiam!



  1. <?php
  2. class bazaDanych
  3. {
  4.  //singleton
  5.  protected static $instance=null;
  6.  protected function __construct() {}
  7.  public static function getInstance($class=__CLASS__) {
  8.      return empty(self::$instance) ? self::$instance=new $class : self::$instance; }
  9.  ///////////
  10.  
  11.  public $serwer, $nazwa, $uzytkownik, $haslo;
  12.  private $idPolaczenia, $iloscZapytan=0;
  13.  
  14.  function polacz()
  15.  {
  16.      if( !( $this->idPolaczenia = mysql_connect( $this->serwer, $this->uzytkownik, $this->haslo ) ) )
  17.          return false;
  18.  
  19.      if( !( mysql_select_db( $this->nazwa, $this->idPolaczenia ) ) )
  20.          return false;
  21.   
  22.      return true;
  23.  }
  24.  
  25.  function rozlacz() {
  26.      mysql_close( $this->idPolaczenia );
  27.  }
  28.  
  29.  function modyfikujBaze( $trescZapytania )
  30.  {
  31.      $this->iloscZapytan++;
  32.   
  33.   //   echo $trescZapytania;
  34.   
  35.      if( $wynikZapytania = mysql_query( $trescZapytania, $this->idPolaczenia ) )
  36.         return $wynikZapytania;
  37.          else return false;
  38.            
  39.  }
  40.  
  41.  function czytajBaze( $trescZapytania )
  42.  {
  43.      if( !($wynikZapytania = $this->modyfikujBaze( $trescZapytania )) )
  44.          return false;
  45.  
  46.      while ($row = mysql_fetch_array( $wynikZapytania ))
  47.            $table[] = $row;
  48.   
  49.      @mysql_free_result( $wynikZapytania );
  50.   
  51.      return $table;
  52.  }
  53. }
  54.  
  55. class Uzytkownik
  56. {
  57.  //singleton
  58.  protected static $instance=null;
  59.  protected function __construct() {}
  60.  public static function getInstance($class=__CLASS__) {
  61.      return empty(self::$instance) ? self::$instance=new $class : self::$instance; }
  62.  ///////////
  63.  
  64.  public $imie, $nazwisko, $login;
  65.  private $id, $haslo;
  66.  
  67.  function wybierzPozycje( $id )
  68.  {
  69.      $id = filtrMysql( $id );
  70.  
  71.      if( !(is_numeric($id)) )
  72.          return false;
  73.  
  74.      if( $wynik = bazaDanych::getInstance()->czytajBaze( "SELECT * FROM uzytkownicy WHERE id=$id" ) )
  75.      {
  76.          $this->id = $id;
  77.       
  78.          $this->login -> $wynik[1][2];
  79.          $this->haslo -> $wynik[1][3];
  80.          $this->imie -> $wynik[1][4];
  81.          $this->nazwisko -> $wynik[1][5];
  82.  
  83.          return true;
  84.      }
  85.      else
  86.          return false;
  87.  }
  88.  
  89.  function ustawHaslo( $haslo )
  90.  {
  91.      if( !(dlugosc($haslo,8,20)) )
  92.          return false;
  93.      $haslo = filtrMysql( $haslo );
  94.   
  95.      $this->haslo = sha1( $haslo );
  96.      return true;
  97.  }
  98.  
  99.  function dodaj()
  100.  {
  101.      if( empty( $id ) & $this->sprawdzDane() )
  102.          return bazaDanych::getInstance()->modyfikujBaze( "INSERT INTO uzytkownicy (id, login, haslo, imie, nazwisko) VALUES ('', '$this->login', '$this->haslo', '$this->imie', '$this->nazwisko')" );
  103.      return false;
  104.  }
  105.  
  106.  function usun()
  107.  {
  108.      if ( !empty( $id ) )
  109.          return bazaDanych::getInstance()->modyfikujBaze( "DELETE FROM uzytkownicy WHERE id=$this->id" );
  110.      else
  111.          return false;
  112.  }
  113.  
  114.  function edytuj()
  115.  {
  116.      if( !empty( $id ) & $this->sprawdzDane() )
  117.          return bazaDanych::getInstance()->modyfikujBaze( "UPDATE uzytkownicy SET login='$this->login', haslo='$this->haslo', imie='$name->imie', nazwisko='$nazwisko->nazwisko' WHERE id=$this->id" );
  118.      return false;
  119.  }
  120.  
  121.  function wczytajWszystkich()
  122.  {
  123.      return bazaDanych::getInstance()->czytajBaze( "SELECT * FROM uzytkownicy" );
  124.  }
  125.  
  126.  function sprawdzDane()
  127.  {
  128.      $this->login = filtrMysql( $this->login );
  129.      $this->imie = filtrMysql( $this->imie );
  130.      $this->nazwisko = filtrMysql( $this->nazwisko );
  131.  
  132.      if( dlugosc($this->login,3,15) & !empty($this->haslo) & dlugosc($this->imie,3,15) & dlugosc($this->nazwisko,3,15) );
  133.          return true;
  134.      return false;
  135.  }
  136. }
  137.  
  138. function dlugosc( $zmienna, $min, $max )
  139. {
  140.  if( strlen( $zmienna ) >= $min & strlen( $zmienna ) <= $max )
  141.      return true;
  142.  return false;
  143. }
  144. function filtrMysql( $zmienna )
  145. {
  146.      $zmienna = stripslashes($zmienna);
  147.  $zmienna = mysql_real_escape_string($zmienna);
  148.  return($zmienna);
  149. }
  150. ?>


  1. <?php
  2. $sql = bazaDanych::getInstance();
  3.  
  4. $sql->serwer = 'localhost';
  5. $sql->nazwa = 'aaa';
  6. $sql->uzytkownik = 'aaa';
  7. $sql->haslo = 'aaa';
  8.  
  9. $sql->polacz();
  10.  
  11. Uzytkownik::getInstance()->imie="Jan";
  12. Uzytkownik::getInstance()->login="jan12";
  13. Uzytkownik::getInstance()->nazwisko="Kowalski";
  14. Uzytkownik::getInstance()->ustawHaslo("passs");
  15. Uzytkownik::getInstance()->dodaj();
  16.  
  17. bazaDanych::getInstance()->rozlacz();
  18. ?>


Ten post edytował marekc12 27.06.2009, 21:45:12
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: 15.10.2025 - 21:08