Impressum  |   RSS  |  Registrieren

tsql

Die Session-Klasse

Da von der Session-Klasse nur eine Instanz benötigt wird, ist sie als Singleton Klasse implementiert. Diese Klasse prüft ob eine Session-Id übergeben wurde (POST und GET) oder erzeugt eine neue Id. Über die Methode getSID kann die aktuelle Session-Id abgefragt werden.
 
Zum Schutz der Session-Id gegen Manipulation wird selbige mit einem Passwort verschlüsselt und nochmals an die SID angehängt. Der Konstruktor erzeugt automatisch eine neue SID, wenn die übergebenen Daten keine gültige SID enthalten. Zur Erleichterung des Session Link’s kann die Methode showLink benutzt werden. Jeder Hyperlink von einer auf eine andere Seite muss die aktuelle Session ID beinhalten, da ansonsten die Anmeldeinformationen verloren gehen.
 
Inhalt der Datei session.php:
 

<?php
 
class session
{
	private static $instance = NULL;
	private static $sid = NULL;
	private static $sessionpasswort='mein-geheimes.passwort';
 
	private  function __construct(){
		if (isset($_GET['sid'])===true){
			self::$sid=$_GET['sid'];
		} else {
			if (isset($_POST['sid'])===true){
				self::$sid=$_POST['sid'];
			}
		}
 
		$testSession = split('-',self::$sid);
		$testMD5 = md5($testSession[0].self::$sessionpasswort);
 
		if($testMD5 !== $testSession[1]){
			self::erzeugeSID();
		}
	}
 
	public static function getInstance(){
     	if (self::$instance === NULL){
          self::$instance = new self;
      	}
      	return self::$instance;
  	}
 
	private function __clone() {}
 
	public function getSID(){
		return self::$sid;
	}
 
	private function erzeugeSID(){
		  $tmp = md5((string)mt_rand() . $_SERVER['REMOTE_ADDR'] . time());
		  self::$sid=$tmp .'-'.md5($tmp.self::$sessionpasswort) ;
	}
 
	public function showLink($mitFragezeichen=false){
		echo ($mitFragezeichen!==true) ? '' : '?', 'sid=',self::getSID();
	}
}
 
$singlesession = session::getInstance();
?>

 
Zurück | Weiter



Weitere Artikel in dieser Kategorie