| Weitere Artikel aus dem Webentwickler Blog |
| Teilen |
Auf der Grundlage der bereits vorgestellten Lösung für die Session-basierte Authentifizierung können Sie nach dem gleichen Schema vorgehen, um eine Cookie-basierte Lösung einzusetzen. Diese basiert ebenfalls auf insgesamt drei Dateien:
- cookielogin.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.
Die Cookie-basierte Lösung setzt voraus, dass der Anwender das Anlegen von Cookies auf dem Client gestattet. Sie hat gegenüber der Session-basierten Lösung den Vorteil, dass der Anwender selbst nach einem Neustart des Systems oder des Browsers eingeloggt bleibt. Erst nachdem sich der Anwender ordnungsgemäß ausgeloggt hat, wird er nicht mehr als authentifizierter Anwender erkannt.
Beispiel – cookielogin.php
"mad",
"caroline" => "car");
if (isset($nutzer_liste[$nutzer]) && ($nutzer_liste[$nutzer] == $pwd)) {
return true;
} else {
return false;
}
}
$geheim_wort = 'geheim';
unset($username);
if ($_COOKIE['login']) {
list($c_username, $cookie_hash) = split(',',$_COOKIE['login']);
if (md5($c_username.$geheim_wort) == $cookie_hash) {
$_POST["$username"] = $c_username;
} else {
echo "Sie besitzen kein gültiges Cookie!";
}
}
if ($_POST["$username"]) {
header('Location: gruss.php');
} else {
if (check_auth($_POST['username'], $_POST['passwort'])) {
setcookie('login', $_POST['username'].','.md5($_POST['username'].$geheim_wort),time()+60*60*24*30);
echo "Sie sind eingeloggt!";
echo "
Weiter";
} else {
echo <<
Login; } } ?>
Beispiel – gruss.php
Ausloggen";
} else {
echo "Guten Tag, anonymer Besucher!";
}
?>
Beispiel – logout.php
Login"; } else { echo "Fehler beim Ausloggen!"; } ?>
Das Cookie verfällt nach 30 Tagen von selbst (time()+60*60*24*30).
Dieser Abschnitt wurde der aktuellen Ausgabe des Buches “PHP 5/MySQL 5″ von Matthias Kannengiesser entnommen, die im Franzis-Verlag erschienen ist. Das Buch ist hierdirekt bestellbar.


































