zisslaweng.de

 Home    CSS    PHP    HTML    JavaScript    Allgemein    Sitemap   exemption-filter

Der Zugriff auf die Daten.

Auch hier wieder die Trennung zwischen dem eigentlichen Datenbankzugriff und der Verwertung der Daten.

Die Datei "z_userclass.php5" enthält als Eigenschaften die gleichen Variablen wie die Datenbank. Logisch, oder? Sie sollen ja in irgendeiner Form bearbeitet werden. Ausnahme: aus der Spalte "rechte" werden zusätzlich die einzelnen Bezeichner (durch '-' getrennt) extrahiert. Sie müssen den hier verwendeten Variablennamen entsprechen.

Hier einige Neuerungen, eingeführt mit PHP5. In PHP4 hatte der Konstruktor eines Objekts den gleichen Namen wie seine Klasse, hier heisst die Methode __construct(). 2 weitere "Magische Methoden" sind __get() und __set(). Sie ersparen die Erstellung von unzähligen Zugriffsmethoden auf die Eigenschaften, ein Zugriff in der Form print $USER->nname ist möglich, wird tatsächlich über die Zugriffsmethode __get() umgeleitet.

 Die Methoden greifen nur fehlende Eigenschaften auf. Wenn Sie bereits eine Eigenschaft für die Klasse definiert haben, ruft PHP __get() und __set() nicht auf.

class User {
  private $daten;

  public function __construct ($user=null) {
    $this->daten = array (
      'id' => '',
      'vname' => '',
      'nname' => '',
      'user' => '',
      'password' => '',
      'mail' => '',
      'rechte' => null,
      'A' => false,
      'B' => false,
      'C' => false);
    if (is_array($user)) {
      foreach ($user as $feld => $wert){
        $this->$feld = $wert;
      }
      if ($this->daten['rechte'] != null) {
        $r = explode("-",$this->daten['rechte']);
        foreach ($r as $key => $val){
          $this->daten[$val] = true;
        }
      }	
    }
  } 
		
  public function __set($eigenschaft, $wert){
    $this->daten[$eigenschaft] = $wert;
  }

  public function __get($eigenschaft){
    if (isset($this->daten[$eigenschaft])) {
      return $this->daten[$eigenschaft];
    } else {
      return false;
    }
  }
		
  public function existUsername()
  { return ($this->daten['user'] != '' ? true : false ); }
	
  public function getFullname () {
    return $this->daten['vname'].' '.$this->daten['nname'];
  }
}

Wie kommen die Werte dahin?

Die vorerst letzte Klasse sorgt dafür und dann auf der nächsten Seite ein erstes einfaches Beispiel.

Die Datei "z_userdbclass.php5". Die bis hierhin relativ nutzlose Klasse BaseDbMapper wird vererbt an (extends) UserDbMapper und wird erweitert um die Methode "readUser". Innerhalb dieser Methode jetzt die Bereitstellung der Daten durch das instanziieren des Objekts User mittels "new User".

Beachten Sie den $sql String bezüglich Passwort, denn in der Datenbank ist das Passwort verschlüsselt abgelegt.

Diese Klasse wird im weiteren Verlauf ergänzt werden durch einige Methoden, aber für einen ersten Test reicht dieser Minimalausbau.

class UserDbMapper extends BaseDbMapper {
	
  public function __construct (){
  }

  public function readUser ($user,$password) {
    $sql  = "
    SELECT *
    FROM z_demo_login 
    WHERE user = '".$this->real_escape_string($user)."'
    && password('".$this->real_escape_string($password)."') 
                                                 = password
    ";
    $result = $this->base_query($sql);
    if ($result->num_rows == 1) {
      return new User($result->fetch_assoc());
    } else {
      return new User();
    }
  }
}
Falls Ihnen PHP noch nicht so geläufig ist, die online Dokumentation hier. Bei den Codebeispielen handelt es sich um PHP 5
Und in Sachen PHP und MySQL... Folgende Übersicht dürfte dabei nützlich sein PHP mysqli Funktionen

 Beim Upload der Datenbank sollten Sie beachten: Felder mit verschlüsselten Werten sind spezifisch für die jeweilige Datenbank (Version). Eine Verschlüsselung auf Ihrem lokalen Rechner kann möglicherweise durch die Datenbank auf Ihrem Webserver nicht dekodiert werden.

Logo