Teil von  SELFPHP   Teil von  Praxisbuch  Teil von  Know-how  Teil von  Sicherheit
Professional CronJob-Service

Suche

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: SELFPHP Forum ::

Fragen rund um die Themen PHP?
In über 130.000 Beiträgen finden Sie sicher die passende Antwort!  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 
 
Session-basierte Authentifizierung: Seite 3

SELFPHP ist Shopware Solution Partner
Shopware ist ein vielfach ausgezeichnetes Onlineshop-System der shopware AG, das auf PHP. Zend Framework und SQL basiert.
SELFPHP unterstützt Sie als Shopware Solution Partner bei der Konzeption, Programmierung und Realisierung Ihres Onlineshops und passt Shopware bei Bedarf an Ihre Unternehmensbedürfnisse an. Weitere Informationen



Ist ein Anwender angemeldet oder war seine Anmeldung erfolgreich, gibt die Funktion true zurück, andernfalls false. Mithilfe der Rückgabewerte können Sie somit entscheiden, was bei einem erfolgreichen bzw. nicht erfolgreichen Login geschehen soll. Die Funktion ist zusätzlich in der Lage zu erkennen, wie oft versucht wurde, sich einzuloggen. Dem Anwender stehen drei Versuche zur Verfügung. Nach drei Versuchen, welche in der Sessionvariablen $_SESSION["versuch"] gespeichert sind, wird die Funktion grundsätzlich den Rückgabewert false liefern. Dies gilt auch in dem Fall, wenn weder die Sessionvariable $_SESSION["auth"] noch die Postvariable $_POST["username"] existieren. In diesem Fall wird davon ausgegangen, dass der Anwender noch keinen Loginversuch unternommen hat.

Sobald der Anwender das Loginformular abgeschickt hat, beginnt der Authentifizierungsprozess. Die Sessionvariable $_SESSION["versuch"] wird in der Session registriert bzw. um den Wert 1 erhöht. Anschließend wird überprüft, ob die Session durch ein Cookie übergeben wurde. Sollte dieses nicht existieren, wird die Funktion abgebrochen und false zurückgegeben. Der Benutzernamen und das Passwort werden in den Variablen $nutzer und $pwd gespeichert. Dabei werden mithilfe der Funktion trim() eventuell vorhandene Leerzeichen vor und nach dem Benutzernamen und Passwort entfernt.

Eine weitere Bedingung ist, dass der Benutzername nicht kürzer als drei Zeichen sein darf. Damit ein identischer Eintrag in der Passwortdatei gefunden werden kann, wird ein String gebildet, welcher genauso aufgebaut ist wie eine Zeile in der Passwortdatei. Anschließend wird der Inhalt dieser Datei mithilfe der Funktion file() in das Array $pwd_liste eingelesen. Dieses Array wird mithilfe der Funktion array_search() durchsucht. Ist der Rückgabewert der Suche ungleich false, so bedeutet dies, der Anwender ist in der Passwortdatei enthalten und hat sich mit dem richtigen Passwort angemeldet. Die Sessionvariable $_SESSION["auth"] wird angelegt und in ihr der Benutzername gespeichert. Die Funktion liefert dann noch den Wert true zurück. Sollte der Anwender bereits angemeldet sein, wird geprüft, ob in der URL der Parameter logout enthalten ist. Ist dies der Fall, wird die Session beendet und die Funktion gibt false zurück, andernfalls true.


Session-Variante

Ich stelle noch eine weitere Variante vor, sodass Sie selbst entscheiden können, welche von beiden Lösungen Ihnen zusagt. Bei der folgenden Variante handelt es sich um eine Umsetzung, die ohne eine externe Passwortdatei auskommt.

Sie basiert auf insgesamt drei Dateien:
  • login.php – Enthält die Eingabemaske samt Authentifizierungsfunktion.
  • gruss.php – Auf diese Seite gelangt der Anwender nach dem Login.
  • logout.php – Hier wird der Anwender ausgeloggt und verabschiedet.


Beispiel – login.php

<?

session_start();

function check_auth($nutzer,$pwd) {
  $nutzer_liste = array ("matthias" => "mad", "caroline" => "car");
  if (isset($nutzer_liste[$nutzer]) && ($nutzer_liste[$nutzer] == $pwd)) {
    return true;
  } else {
    return false;
  }
}

$geheim_wort = 'geheim';

unset($_POST["$username"]);

if ($_SESSION['login']) {
  list($s_username, $session_hash) = explode(',',$_SESSION['login']);
  if (md5($s_username.$geheim_wort) == $session_hash) {
    $_POST["$username"] = $s_username;
  } else {
    echo "Sie haben an ihrer Session rumgesaut!";
  }
}

if ($_POST["$username"]) {
  header('Location: gruss.php');
} else {
if (check_auth($_POST['username'], $_POST['passwort'])) {
  session_start();
  $_SESSION['login'] = $_POST['username'].','.md5($_POST['username'].$geheim_wort);
  echo "Sie sind eingeloggt!";
  echo "<p><a href='gruss.php'>Weiter</a>";
} else {
echo <<<Login
<form method="post" action="login.php">
Benutzername:<br>
Benutzer:
<input type="password" name="username"><br>
Passwort:
<input type="text" name="passwort"><br>
<input type="submit" value="Login">
</form>
Login;
}
}

?>




Session-basierte Authentifizierung Seite 2
 




:: Premium-Partner ::

Webhosting/Serverlösungen

Profihost AG weitere Premium-Partner
 

:: SELFPHP Sponsor ::

Kaspersky Labs GmbH weitere Sponsoren
 


:: Buchempfehlung ::

TYPO3 Kochbuch

TYPO3 Kochbuch zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Webhosting/Serverlösungen

Suchen Sie den für Sie passenden IT-Dienstleister für Ihr Webhosting-Paket oder Ihre Serverlösung?

Sie sind nur ein paar Klicks davon entfernt!


 

Ausgewählter Tipp im Bereich PHP-Skripte


Datumsangaben in Deutsch anzeigen

Weitere interessante Beispiele aus dem SELFPHP Kochbuch finden Sie im Bereich PHP-Skripte
 

SELFPHP Code Snippet


String mit einem Schatteneffekt versehen (3D-Look)

Weitere interessante Code Snippets finden Sie auf SELFPHP im Bereich PHP Code Snippets
 
© 2001-2017 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt
© 2005-2017 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de