zisslaweng.de

 Home    CSS    PHP    HTML    JavaScript    Allgemein    Sitemap   exemption-filter

Jetzt geht alles ganz schnell.

Dank der Vorarbeit sind jetzt nur noch wenige Dinge zu regeln. Eine Klasse Session mit einigen einfachen Methoden, das war's denn schon. Vielleicht zu beachten: $USER in der SessionClass ist das komplette Objekt User (nicht nur der Username)

Wenn Sie alles hier erproben wollen: auf der Seite "die Anmeldung" anmelden, per Mail ein Passwort bekommen und dann hier einloggen. Als Bestätigung, dass es funktioniert, rechts oben eine Begrüßung, und wenn sie die Seite verlassen und wieder zurückkommen eine Meldung, dass sie eingeloggt sind. Und auf der folgenden Seite die Möglichkeit, Ihre Daten zu editieren und (wenn Sie Bedenken haben) Ihre Mailadresse wieder zu löschen.

Ich habe darauf verzichtet, den Code für das Handling "Passwort vergessen" hier zu listen, darin sind keine aufregend neue Dinge.

Hier nun die letzten Schritte

Eine neue Datei z_sessionclass.php5 mit folgendem Code:

class SessionClass {
  private $loginstate = false;
  public $USER = '';

  public function __construct () {
    session_start();
    if (isset($_SESSION['user'])) {
      $this->USER = $_SESSION['user'];
      $this->loginstate = true;
    }
  }

  function login($user, $password) {
    $abfrage = new UserDbMapper();
    $user = $abfrage->readUser($user,$password);
    if ($user->existUsername()) {  
      $_SESSION['user'] = $this->USER = $user;
      $this->loginstate = true; 
    } else { 
      $this->loginstate = false; 
    }
    return $this->loginstate; 
  }

  public function logout() {
    session_destroy(); 
    $this->loginstate = false;
    $this->USER = '';
  }

  public function getLoginState()
    { return $this->loginstate; }
}

Und in dieser Seite eingebettet ganz zu Beginn

include ('../php/z_sessionclass.php5');
$Session = new SessionClass();
$message = 'Melden Sie sich an:';

if ($Session->getLoginState() && is_object($Session->USER)){
  $message = $Session->USER->getFullname()." eingeloggt";}

if(!$Session->getLoginState() && isset($_POST['submitLogin'])){ 
  $User = new User;
  $User->user = substr(trim(isset($_POST['inputUsername']) 
      ? $_POST['inputUsername']:''),0,10);
  $User->password = substr(trim(isset($_POST['inputPassword']) 
      ? $_POST['inputPassword']:''),0,10);
  if ($Session->login($User->user ,$User->password)){ 
    $message = "Moin, ".$Session->USER->getFullname();
  } else { 
    $message = "keine Berechtigung";
  }
}

if($Session->getLoginState && isset($_POST['submitLogout'])){
  $message="Tschüs, ".$Session->USER->getFullname();
  $Session->logout();
}

Nun steht nichts mehr im Wege, Ihren Usern mit fein unterteilten Rechten diesen oder jenen Zugriff auf Ihre Webseite zu erlauben.

Wie macht PHP das?

Der Begriff Session ist eher eine Definitionsfrage, kein Protokoll. Wenn der Browser Cookies erlaubt, ist das kein Problem. Mit jedem Seitenabruf wird dieser Cookie zurückgeliefert und erlaubt eine eindeutige Erkennung des Browsers = Users.

Sollte der User Cookies deaktiviert haben, wird die Session-ID dem Client im URL-String übermittelt und bei der Anforderung einer neuen Seite wieder dem Server übergeben.

PHP speichert Session-ID und zugehörige Variablen im globalen Array $_SESSION[] und genau das wird ausgelesen mit dem Instanziieren der Klasse  new SessionClass()

 zisslaweng 0 Kommentare zu diesem Artikel

Melden Sie sich an:

Login
User:

Passwort:

 
Logout
Passwort vergessen

Wie versprochen, alle Dateien zum download in einem tar Archiv. Login Verwaltung in der Version vom 21.01.11 13:44

 

Ihr Kommentar zum Artikel

Name:
Ort:
 
Logo