HTML-Formulare
- Benutzerverwaltung für die eigene Website
- 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 MySQ...
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(); }

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"]);

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.