Login mit PHP

HTML-Formulare

So richten Sie für Ihre Besucher ein Login ein

Was nun noch fehlt, ist ein Anmeldeskript. Das HTML-Formular enthält die gleichen Felder benutzer und email wie das Registrierformular und ruft im action-Attribut das Skript anmelden.php auf. In diesem stellen Sie wie gehabt die Verbindung zur MySQL-Datenbank her und speichern die Datensätze in einem Array. Anschließend prüfen Sie, ob der Benutzer existiert und auch, ob die E-Mail-Adresse übereinstimmt.

while($anzumeldenderBenutzer != NULL)
{ if($anzumeldenderBenutzer
["benutzer"] == $benutzer && $anzumeldenderBenutzer["emai"] == $email)
{ $vorhanden = true;
break; }
$anzumeldenderBenutzer = $forumsmit
glieder->fetch_array(); }
image.jpg

© Hersteller/Archiv

In der Strukturansicht der Tabelle Forumsmitglieder lassen sich unten neue Felder hinzufügen.

Hat die Variable $vorhanden den Wert $true, handelt es sich also um einen registrierten Besucher, präsentieren Sie ihm im Beispiel den Zugang zur gewünschten Seite (im Beispiel: forum.php). Diese Seite bekommt nur, wer sich angemeldet hat oder wer den direkten Link dazu kennt. Letzteres lässt sich mit einem einfachen Skript nicht vermeiden. Um die Seite nur an wirklich angemeldete Benutzer auszuliefern, benötigt es Techniken wie Session-IDs oder Session-Coockies.

Verwenden Sie Session-Cookies

Mit Session-Cookies bekommt ein angemeldeter Besucher ein zeitlich begrenztes Cookie gesetzt, und der Server überprüft bei jeder Seite, die der Besucher aufruft, ob das Cookie noch gültig ist. Diese Technik wollen wir in einer der nächsten Ausgaben vorstellen.

Zum Abschluss noch zwei Tipps, um die Skripte hinsichtlich ihrer Sicherheit zu optimieren. Der erste bezieht sich auf reines HTML: Um die Eingabe in Textfeldern zu maskieren, definieren Sie das entsprechende <input>-Element mit dem Attribut type="password" als Passwortfeld. Hier könnten Sie z.B. bei der Eingabe der E-Mail-Adresse so verfahren, da diese bei der Anmeldung ja praktisch als Passwort fungiert.

<input name = "email" type= "password"
size = "35", maxlength = "25">

Im Code verschlüsseln Sie Passwörter am besten mit der md5()-Funktion.

$email = md5($_POST["emai"]);
image.jpg

© Hersteller/Archiv

Das Skript registrieren.php (workshop2.zip) schreibt die E-Mail-Adressen in verschlüsselter Form in die Datenbank.

Die md5()-Funktion transformiert Zeichenfolgen nach einem vorgegebenen Algorithmus. Eine Rückumwandlung ist nicht möglich, für Ihre Zwecke aber auch nicht notwendig bzw. gar nicht erwünscht. Beachten Sie, dass Sie die Verschlüsselung sowohl im Anmeldeskript als auch bei der Registrierung durchführen müssen.

Sie speichern also die Passwörter in verschlüsselter Form in der Datenbank, und wenn sich ein Benutzer anmeldet, transformieren Sie das eingegebene Passwort mit md5() und vergleichen es mit dem in der Datenbank gespeicherten Passwort. Somit könnte jemand, der Zugriff auf die Datenbank hat, mit dem verschlüsselten Passwort nichts anfangen, da er das Passwort im Klartext ja nicht kennt.

Sonderzeichen maskieren

Möchten Sie Ihren Benutzern erlauben, für den Benutzernamen auch Sonderzeichen zu verwenden, dann ist es sinnvoll, diese im PHP-Code vor dem Absetzen von SQL-Abfragen mit der Methode real_escape_string() zu maskieren. Ansonsten könnte es z.B. beim Ausführen des Befehls INSERT INTO Forumsmitglieder (benutzer, email) VALUES (,$benutzer', ,$email') (in registrieren.php) zu Problemen kommen, wenn nämlich der gewählte Benutzername Zeichen enthält, die in SQL eine besondere Bedeutung haben, wie z.B. das einfache Anführungszeichen.

Bei dem Benutzernamen O'Key würde dieses hier mit den umgebenden Begrenzungszeichen korrelieren. Bei der Methode real_escape_string() handelt es sich um eine Instanzmethode der mysqli-Klasse. Die zu maskierende Zeichenfolge übergeben Sie als String-Parameter.

$user = $mysqli->real_escape_string($benutzer);
$neuesMitglied = "INSERT INTO Forumsmitglieder (benutzer, email) VALUES
('$user', '$emai')";

Schützen Sie Verzeichnisse per .htaccess

Einen sehr zuverlässigen Schutz für Verzeichnisse bieten auch .htaccess-Dateien. Schreiben Sie in diese die Benutzer, die auf das geschützte Verzeichnis zugreifen dürfen und laden Sie die Datei anschließend in das entsprechende Verzeichnis auf Ihrem Webserver. Eine .htaccess-Datei könnte z.B. so aussehen:

AuthType Basic
AuthName "Passwortgeschützter Be
reich"
AuthUserFile /<Pfad>/<zur>/.htpasswd
require user Donald
require user Yvonne
require user Poweruser
Die .htaccess-Datei korrespondiert

Die .htaccess-Datei korrespondiert mit der Datei .htpasswd, die Sie am sichersten in ein anderes Verzeichnis auf Ihrem Webspace legen. In diese Datei schreiben Sie die verschlüsselten Passwörter zeilenweise in der Form Benutzername:Passwort. Den absoluten Pfad zu .htpasswd geben Sie in der .htaccess-Datei nach AuthUserFile an (den Pfad vom Wurzelverzeichnis des Server-Rechners zu Ihrer Präsenz erfahren Sie ggf. von Ihrem Provider).

Bei beiden Dateien handelt es sich um gewöhnliche Textdateien, die Sie mit jedem beliebigen Textditor (z.B. Notepad) erstellen und bearbeiten können. Sollte die MD5-Verschlüsselung in Ihrer .htpasswd-Datei nicht funktionieren, können Sie zum Verschlüsseln der Passwörter im PHP-Code alternativ die Methode crypt() verwenden. Diese verwendet die Standard-DES-Verschlüsselung von UNIX, die für den Einsatz in .htacces-bzw. .htpasswd-Dateien optimal geeignet ist.

Mehr zum Thema

HTML 5
Webgestaltung

Google Web Designer ist spezialisiert auf HTML5. Ein Vorteil dieses Standards ist das einfache Einbinden von Videos mit dem Element video. Wir zeigen…
Wir verraten, wie Sie Fritzboxen und andere Router vor Hackern schützen.
Fritzbox, Asus, Belkin und Co.

Fritzbox, Asus, Belkin oder DLink - die Liste der geknackten Router ist lang. Hacker stahlen Passwörter oder NAS-Daten. So machen Sie Ihren Router…
Wir führen Sie zur eigenen Windows-App - unserem PC-Magazin-RSS-Feed.
C# und XAML

Wir zeigen, wie Sie Windows 8.1 Apps selbst programmieren können. Lernen Sie das App erstellen an Hand unseres Beispiels: dem RSS-Feed von PC…
Windows Tipps & Tricks: Benutzerrechte unter Windows 8.1
Programme richtig installieren

Wir zeigen Ihnen, wie Sie sich unter Windows 8.1 alle Benutzerrechte verschaffen und Programme richtig installieren.
Windows 8: Starbildschirm
Microsoft Project Siena

Erstellen Sie sich selbst eine App für Windows 8, die auf alle Funktionen Ihres Tablets zugreifen kann, inklusive Kamera, Mikrofon und Lautsprecher.…