Ein einfacher Login mit PHP ohne Datenbank
Eine der meistgeforderten Anwendungen für PHP ist ein Loginscript - in diesem Tutorial erstellen wir ein einfaches Loginscript für einen Nutzer, im nächsten Tutorial weiten wir das dann auf mehrere Nutzer mithilfe einer mySQL-Datenbank aus.
Die grundlegende Synthax von PHP sollte Ihnen schon bekannt sein, wenn wir uns jetzt an die SESSION-Funktionen von PHP wagen. Dieses Script kann dazu genutzt werden, eine einzelne Seite (zum Beispiel einen Downloadbereich) vor Zugriffen Unbefugter zu schützen. Für komplette Webseiten oder Lösungen für mehrere Nutzer sollten Sie auf das entsprechende Tutorial zurückgreifen.
Legen wir los. Zunächst erstellen wir eine neue PHP-Datei für unseren geschützten Bereich. Ein einfaches Gerüst für unsere Datei würde beispielsweise so aussehen:
<?php
session_start();
function member() {
// Eingeloggt? Einloggen? Ausloggen?
return false;
}
if (member()) {
// Mitglied
} else {
// Gast
}
?>
In der von uns definierten Funktion member prüfen wir, ob der Besucher Zugriff erhalten darf: Dazu prüfen wir zunächst, ob eine Aktion vorliegt - sich ein Nutzer also einloggen bzw. ausloggen will. Nehmen wir in diesem Fall an, die Logindaten und der Logoutaufruf werden über ein Formular gesendet:
<?php
function member() {
if (isset($_REQUEST['logout'])) {
// Logout des Nutzers
} elseif (isset($_SESSION['user'])) {
// Nutzer noch drin
} elseif (isset($_REQUEST['username']) && isset($_REQUEST['password'])) {
// Username und Password prüfen, bei Erfolg einloggen
}
return false;
}
?>
Bei dem $_REQUEST-Array handelt es sich um ein globales Array von PHP, in ihm sind GET und POST-Variablen gespeichert. Der Nutzer könnte sich also ausloggen, indem ein Formular abgesendet wird oder indem er an den URL der Seite noch ein &logout=1 hängt.
Das SESSION-Array stellt ein mächtiges Werkzeug dar: mit session_start() zu Beginn des PHP-Scripts wird es ermöglicht, Variablen zwischen Seitenaufrufen weiterzugeben. Wie das funktioniert, werden wir gleich sehen, denn jetzt wird die member-Funktion vervollständigt.
<?php
function member() {
if (isset($_REQUEST['logout'])) {
unset($_SESSION['user']);
} elseif (isset($_SESSION['user'])) {
return true;
} elseif (isset($_REQUEST['username']) && isset($_REQUEST['password'])) {
if ($_REQUEST['username'] == 'admin' && $_REQUEST['password'] == 'demo') {
$_SESSION['user'] = true;
return true;
}
}
return false;
}
?>
Damit ist unser einfaches Loginscript eigentlich schon fertig - die vollständige Datei mit Formular und Logout-Link könnte jetzt so aussehen:
<?php
session_start();
function member() {
if (isset($_REQUEST['logout'])) {
unset($_SESSION['user']);
} elseif (isset($_SESSION['user'])) {
return true;
} elseif (isset($_REQUEST['username']) && isset($_REQUEST['password'])) {
if ($_REQUEST['username'] == 'admin' && $_REQUEST['password'] == 'demo') {
$_SESSION['user'] = true;
return true;
}
}
return false;
}
if (member()) {
echo 'Willkommen, Mitglied! <a href="?logout=1">ausloggen</a>';
} else {
echo 'Hallo Gast! Bitte logge dich ein!';
echo '<form name="login" action="" method="post">';
echo 'Name: <input type="text" name="username" /><br />';
echo 'Passwort: <input type="password" name="password" /><br />';
echo '<input type="submit" name="login" value="Einloggen" />';
echo '</form>';
}
?>
Das ganze kann natürlich noch verfeinert werden - wie, das besprechen wir im nächsten Tutorial!