Impressum  |   RSS  |  Registrieren

tsql

Die Login Klasse

Die Login-Klasse prüft unter Zuhilfenahme der Datenbank-Klasse die Authentifizierung der Benutzer.
 
Jede Instanz erwartet im Konstruktor die aktuelle Session-Id und prüft, ob Login- oder Logout- Informationen beim Seitenaufruf übergeben wurden. Ist dies der Fall, führt der Konstruktor eigenständig das Login bzw. Logout durch. Die Methoden login und logout sind aus diesem Grund privat und damit nur innerhalb der Klasse erreichbar.
 
Über die Methode logged_in prüft die Klasse, ob der Benutzer authentifiziert ist.
Dazu wird in der Datenbank nach einem Benutzer gesucht, welcher die gleiche Session-Id wie der aktuelle Benutzer hat.
Die Methode showLogin gibt einen Anmeldedialog aus, mit dem ein Benutzer sich authentifizieren kann. Das Gegenstück dazu stellt showLogout dar. Durch den Aufruf dieser Methode wird ein Link ausgegeben, welcher zur Abmeldung dient.
 
Inhalt der Datei login.php
 

<?php
 class login{
 	private $id = NULL;
	private $name = NULL;
	private $passwort = NULL;
	private $email = NULL;
	private $session = NULL;
	private $dbconnection = NULL;
 
	public function __construct($sessionid){
		$this->dbconnection = new DB_MySQL();
		$this->session = $sessionid;
		if (isset($_POST['login'])===true && 
            isset($_POST['username'])===true && 
            isset($_POST['userpass'])===true){
 
			 $this->name = $_POST['username'];
			 $this->passwort = $_POST['userpass'];
			 $this->login();
			 return true;
		}
 
		if (isset($_GET['logout'])===true && $_GET['logout']==='1'){
			 	$this->logout();
		}
	}
 
	private  function login(){
		$query = 'SELECT * 
			   FROM users
			  WHERE  
			   Name     = \''. mysql_real_escape_string($this->name) .'\' AND
			   Passwort = \''. mysql_real_escape_string(MD5($this->passwort)) .'\'
			  LIMIT 1;';
 
		$this->dbconnection->query(&$query);
		if($this->dbconnection->count()!==1){
			return false;
		} else {
			$row = $this->dbconnection->fetchRow();
			$this->email = $row['EMail'];
			$this->id    = $row['ID'];
 
			$this->logout();
 
			$query = 'UPDATE  
			           users
			          SET  
			           Session = \''. mysql_real_escape_string($this->session) .'\' 
			          WHERE 
			           ID =  '. $this->id .' 
			          LIMIT 1;';
 
			$this->dbconnection->query(&$query);			
			return true;
		}
	}
 
	public function logged_in(){
		$query = 'SELECT * 
			   FROM users
			  WHERE  
			   Session = \''. mysql_real_escape_string($this->session) .'\' 
			  LIMIT 1;';
 
		$this->dbconnection->query(&$query);
		return ($this->dbconnection->count()!==1) ? false : true;
	}
 
//----------------     ... gekürzt ...
 
	private function logout(){
		$query = 'UPDATE  
			   users
			  SET  
			   Session = NULL 
			  WHERE 
			   Session = \''. mysql_real_escape_string($this->session) .'\'
			  LIMIT 1;';
 
		$this->dbconnection->query(&$query);
	}
}
?>

 
Zurück | Weiter



Weitere Artikel in dieser Kategorie