php-resource.de

PHP Tutorial: Wie erstelle ich ein LogIn-Skript?

Das folgende Tutorial nutzt eine Datenbank, in der die Benutzerdaten gespeichert werden und eine Session, in der der Benutzer registriert wird.

|14.03.2003 | andy@ | 52393 | KAT : PHP | | Kommentare 7


4

9

Zeile 01 - 04

Gleich zu Beginn geht es mit einer PHP-Funktion namens session_start() los. Man sollte eine Session immer vor der ersten HTML-Ausgabe starten. Daher habe ich mir angewöhnt, die Funktion immer an die erste Stelle im Quelltext zu setzen.
Diese Funktion startet nun eine Session und legt auf dem Webserver im temporären Verzeichnis eine Textdatei mit noch leerem Inhalt an. Ebenso wird eine Session-ID erzeugt, mit der die Session eindeutig identifiziert werden kann.

Weiter geht es mit dem Einbinden der Datei connect.inc.php mittels der PHP-Funktion require(). Mit dieser Funktion zwingen wir den Webserver, den Inhalt der in Klammern angegebenen Datei, in unser Skript vorzunehmen. Sollte die Datei nicht existieren, wird das Skript abgebrochen.

Die nächsten Angaben sind HTML-Angaben um eine normale HTML-Datei zu erzeugen.

Zeile 09

Mit <link rel="stylesheet" type="text/css" href="style.css"> binden wir unsere Stylesheet-Datei ein, die wir später noch erstellen werden.

Zeile 12 und 13

In Zeile 12 starten wir die Abfrage <?php if(!isset($_POST['submit'])) { ?>, die auf Deutsch soviel heißt wie: Wenn der Button mit dem name-Attribut submit noch nicht gedrückt wurde, führe folgenden Quelltext aus.

Der folgende Quelltext ist eine ganz normale HTML-Tabelle mit einem Formular, das zwei Textfelder für den Benutzernamen und das Passwort enthält.

Zeile 22

Wer will, der kann das Textfeld Benutzername auch mit einem Wert vorbelegen, wenn der Button gedrückt wurde und das Textfeld Benutzername nicht leer ist.
Dies geschieht mit der Abfrage <?php if($_POST['username'] != "" ) {echo ' value="'.$_POST['username'].'"';} ?> die soviel heißt wie:
Wenn das Feld username über das Formular gepostet wurde und nicht leer ist, belege das Textfeld mit diesem Wert vor.

In Zeile 36 schließen wir die Abfrage aus Zeile 12 wieder und fahren mit weiteren Abfragen fort.

Zeile 36 und 37

Hier erfolgt mit elseif (ansonsten wenn) eine weitere Abfrage. }elseif(!isset($_POST['username']) || $_POST['username'] == "") { Die Abfrage lautet auf Deutsch:
Wenn die Variable username noch nicht gesetzt ist (über ein Formular gepostet -> $_POST) oder (||) die gepostete Variable username leer ist (""), also nichts eingegeben wurde, dann führe nachfolgenden Code aus. Sollte also die Variable username nicht existieren oder keinen Wert aufweisen, dann wird der Code der Zeile 37 ausgeführt, der wie folgt lautet:
echo '<p align="center">Einen Benutzernamen brauchen wir schon ;-)<br><br><a href="index.php?lang=de&">Zurück</a></p>'; Wir geben mit dem echo-Befehl den String, der zwischen den einfachen Anführungszeichen steht, aus. Dieser String beinhaltet einen Link zurück auf die Anmeldeseite.

Zeile 38 - 44

Hier geschieht das Selbe wie in den Zeilen 36 und 37, nur dass dieses mal die Überprüfung für das Passwort stattfindet. Weiterhin geben wir hier mit dem echo-Befehl ein kleines Formular mit einem versteckten Feld (<input type="hidden" name="username" value="'.$_POST['username'].'">), das den geposteten Usernamen als Wert enthält, aus.
Das Feld bekommen wir im Browser nicht zu sehen. Es wird nur im Quelltext der HTML-Seite sichtbar. Weiterhin generieren wir eine Schaltfläche mit der Beschriftung Zurück. Denn wir wollen ja das Textfeld für den Benutzernamen mit einem Wert vorbelegen, wenn dieser bereits gesendet wurde.

Zeile 45 - 48

Wurden beide Angaben (Benutzername und Passwort) eingegeben und über den Button gesendet, gelangen wir in den else-Zweig (Ansonsten). Hier wird als nächstes der Variablen $password mit der PHP-Funktion md5() eine codierte Zeichenkette zugewiesen. Als nächstes erfolgt mit @mysql_query eine Abfrage an die Datenbank, die als WHERE-Klausel die Bedingung stellt, dass nur der Username und das Passwort des Benutzers ausgewählt wird, der mit dem Formular gesendet wurde: WHERE user = '".$_POST['username']."' Mit or die("Select ist fehlgeschlagen!"); generieren wir im Falle eines Fehlschlagens der Abfrage unsere eigene Fehlermeldung die ausgegeben wird und brechen das Skript ab.

In Zeile 48 erzeugen wir eine Variable namens $result, die das Ergebnis unserer Abfrage enthalten soll. Schlägt die Abfrage fehl (Der Benutzername existiert nicht), bekommen wir kein Ergebnis zurück und wir brechen wieder mit or die das Skript ab und erzeugen unsere eigene Fehlermeldung.

Zeile 49 - 55

Haben wir bis hierher alles überstanden (Benutzername und Passwort eingegeben und Benutzer existiert in der Datenbank), starten wir die nächste Abfrage.
In der Abfrage if($password != $result['pass']){ fragen wir, ob das Passwort aus dem Formular ungleich (!=) dem Passwort aus der Datenbank ($result['pass']) ist und wenn ja, führen wir den Code zwischen den geschweiften Klammern aus. Dieser Code ist nichts anderes als wieder ein kleines Formular mit einem hidden-Feld, das den Benutzernamen aus dem Formular als Wert enthält und eine Fehlermeldung, dass das Passwort falsch ist. Ein Zurück-Button rundet die Sache ab und wir gelangen durch Klick auf den Button wieder zum Anmeldeformular mit eingetragenem Benutzernamen.
Den Abschluss bildet der die-Befehl, der unser Skript an dieser Stelle abbricht.

Zeile 56 - 62

Ist auch das eingegebene Passwort korrekt, gelangen wir in den else-Zweig (ansonsten). Wir erzeugen in Zeile 57 die Variable $user und weisen ihr als Wert den über das Formular gesendeten Benutzernamen zu. In Zeile 58 wird nun mit der PHP-Funktion session_register() die Variable $user in der Session registriert. Bitte beachten!
Bei der Funktion session_register() wird das Dollar-Zeichen der Variable weggelassen! Wir schreiben deshalb also session_register('user'). In Zeile 59 geben wir noch eine Erfolgsmeldung aus, dass der LogIn erfolgreich war und generieren einen Link zu der "sicheren" Seite. Als Abschluss müssen wir noch unsere beiden else-Zweige mit schließenden, geschweiften Klammern beenden und in Zeile 62 beenden wir mit ?> unser PHP-Skript

Zeile 63 und 64

Diese beiden Zeilen schliessen das <body>- und das <html>-Tag

Die index.php ist somit abgeschlossen und fertig.

Navigation -> Seitenanzahl : (9)

  «  1 2 3 4 5 6 7 8 9  » 
Kommentare zum Tutorial
Tutorial kommentieren
 
02.01.2010 20:03:50 Ein Gutes, Neues Jahr 2010 wünsche ich erst einmal allen :-) @ jimbob-walton: Dann mach was... ...
11.12.2009 16:52:27 @Andreas: In PHP bin ich (noch) nicht so fit, könnte aber meine Unterstützung anbieten was ...
11.12.2009 15:35:52 wir würden uns freuen :) ...
10.12.2009 00:13:50 Hi Ihrs ;) Es freut mich einerseits, dass dieses Tutorial immer noch so beliebt ist und auch imm ...
09.12.2009 23:09:48 Seite 3 ist ein Fehler im Quellcode, deshalb kann ein Einloggen nicht funktionieren (der md5-Hash wi ...

Alle Kommentare anzeigen ...
 
Über den Autor
andy@

andy@

Status
Premium Mitglied

Beruf
Unbekannt

Mitglied seit:
30.04.2009

letzte Aktivität
04.06.2009

 

Tutorial bewerten

Hat Ihnen dieses Tutorial gefallen? Dann bewerten Sie es jetzt! Fünf Sterne bedeutet "Sehr gut", ein Stern "Unzureichend".



 

aktuelle Artikel

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Neu | Berni

Wissensbestand in Unternehmen

Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Neu | Berni