./ Editiert: => 2 \.
In dieser Anleitung geht es darum, wie ein einfaches jedoch sicheres Loginsystem
mit MySQL und SESSIONS programmiert / gecodet wird.
Bevor Wir mit der Anleitung loslegen, möchte ich die Vorraussetzungen auflisten;
> Du musst die Grundlagen wie Variablen und Funktionen.. beherschen.
> Du musst ein Webspace besitzen, was PHP und MySQL unterstützt.
> Du musst eine MySQL Datenbank besitzen.
> Du solltest lust und viel Zeit zum Lesen haben.
Die Vorraussetzungen sind nun erfüllt und es kann los legen.
Du benötigst für die Anleitung folgende Dateien, die du später für das Loginsystem auf dem Webspace hochladen musst.
Die benötigten Dateien;
Die Datei "index.php", wird bei jedem Webspace, falls kein manuelles Pfad zu einer Datei angegeben wurde,
automatisch aufgerufen.
Nehmen Wir als Beispiel Google. Wenn Wir "http://www.google.de" aufrufen, werden Wir eigentlich auf
"http://www.google.de/index.php" weitergeleitet. Die "index.php" ist ohne eine übernommene Einstellung die
Standart Datei, die immer aufgerufen wird.
Die Datei "home.php", kann nur ein eingeloggter Benutzer aufrufen.
Falls der Benutzer nicht eingeloggt ist, wird der Benutzer zurück auf die Datei/Seite "index.php" weitergeleitet.
In dieser Datei/Seite, kann der Benutzer seine Statistik ansehen.
Es gibt viele Methoden um ein Loginsystem zu programmieren / coden.
Wir benutzen eine Methode, die für etwas fortgeschrittene ist, undzwar mit Klassen.
In der "class.php", schreiben Wir die Klassen und Funktionen für die MySQL Verbindung.
Beim Aufrufen der Datei "logout.php", werden Wir den Spieler seine Session löschen, den Benutzer
somit ausloggen und auf die Startseite (Loginformular) weiterleiten.
Nun hast du die benötigten Dateien und Wir können mit dem Schreiben beginnen.
Wir fangen mit den einfachsten an, undzwar mit der Datei "logout.php".
Wir öffnen die Datei "logout.php" und schreiben zu erst den PHP Tag, damit unser Browser erkennt,
dass Wir mit PHP beginnen.
Dazu schreiben Wir folgendes in die Datei "logout.php" rein;
Nun weiß unser Browser, hier beginnt PHP. Alle Funktionen von PHP muss zwischen den PHP Tags rein.
Da Wir mit Sessions arbeiten, müssen Wir eine Session starten, um es auch wieder zu löschen denn,
wenn Wir eine Session starten, gillt diese Session solange, bis Wir unseren Browser geschlossen haben, auf unserer
Seite.
Dazu schreiben Wir folgendes zwischen den PHP Tags;
Nun haben Wir eine Session gestartet und müssen es auch wieder löschen, damit der Benutzer ausgeloggt wird.
Dazu schreiben Wir folgendes zwischen den PHP Tags;
Nun haben Wir den Benutzer ausgeloggt. Damit der Benutzer nach dem Ausloggen, auf die Startseite weitergeleitet
wird, schreiben Wir folgendes zwischen den PHP Tags;
Nun haben Wir den Spieler ausgeloggt und leiten ihn auf die Datei/Seite "index.php".
Mit dem Ausloggen sind Wir nun fertig.
Nun öffnen Wir die Datei "class.php" und schreiben auch dort den PHP Tag.
Wir erstellen nun eine Klasse Namens "MySQL", dazu schreiben Wir folgendes zwischen den PHP Tags;
Nun haben Wir eine Klasse, jedoch ohne Funktionen. Wir definieren zu erst die benötigten Informationen,
was für eine MySQL Verbindung wichtig ist.
Wir definieren diese Funktionen in der "privat" Methode, da Wir diese Variablen in der gesammten Klasse verwenden
wollen.
Nun haben Wir die Klasse für "MySQL", jedoch fehlt uns die Funktion.
Um die Funktion zu erstellen, schreiben Wir folgendes in die Klasse;
Nun haben Wir auch die Funktion.
Diese Funktion ist public, dies bedeutet, dass die Funktion auch außerhalb der Klasse verwendet werden kann.
Wir wollen aber die MySQL Verbindung nur in der Klasse erlauben, dafür rufen Wir die Funktion "MySQLConnect"
in der "MySQL" Funktion auf und definieren hier nochmals die Variablen, damit Wir sie auch in der "MySQLConnect"
Funktion verwenden können;
$this->Hostname = $Hostname;
$this->Username = $Username;
$this->Password = $Password;
$this->Database = $Database;
$this->MySQLConnect();
Okey, Wir haben jetzt zwar paar Funktionen, jedoch können Wir keine MySQL Verbindung aufbauen.
Für das Aufbauen einer MySQL Verbindung, brauchen Wir nun die Funktion "MySQLConnect", diese ist in der "privat" Methode,
da Wir sie nicht außerhalb der Klasse aufrufen wollen.
Um die Funktion zu erstellen, schreiben Wir nun folgendes unter der "MySQL" Funktion;
Und nun bauen Wir eine Verbindung auf, in dem Wir folgendes in die Funktion "MySQLConnect" schreiben;
$this->Connect = mysql_connect($this->Hostname, $this->Username, $this->Password);
$this->SelectDB = mysql_select_db($this->Database, $this->Connect);
if(!$this->Connect || !$this->SelectDB)
{
die('MySQL Fehler ist aufgetreten!');
}
Nun können Wir durch das Aufrufen der "MySQL" Klasse/Funktion, eine MySQL Verbindung aufbauen.
Bevor Wir mit dem Loginsystem anfangen, benötigen Wir noch in der MySQL Datenbank, eine Tabelle wo die
Benutzerdaten gespeichert sind.
Ich benutze "NaviCat", da es übersichtlicher und schneller zu bedienen ist.
Wir erstellen eine Tabelle mit folgender Struktur;
Nun können Wir einen Benutzer einfügen und später uns mit den Daten einloggen.
Für das Loginsystem wechseln Wir nun in die Datei "index.php" und schreiben auch hier zu erst die
PHP Tags;
.
Wir includen die Datei "class.php", damit Wir die Funktionen aus der class.php auslesen können.
Dazu schreiben Wir folgendes zwischen den PHP Tags;
Es gibt viele Methoden um eine Datei zu includen. Als Standart wird "include '';" verwendet,
Wir verwenden "require_once('');". Der Unterschied ist, dass bei "require_once('');" die Datei die Wir includen,
vorhanden MUSS und falls nicht, gibt der Browser / Server uns eine Fehlermeldung aus.
Nun starten wir eine Session für den Benutzer;
Und bauen eine Verbindung zu unserer MySQL Datenbank;
Nun überprüfen Wir ob das Loginformular abgesendet wurde, dies geht wie folgt;
Nun überprüfen Wir zwar ob das Formular abgesendet wurde, jedoch fehlt uns noch das Überprüfen der Benutzerdaten.
Dazu definieren Wir erstmal folgende Variablen, für den Benutzernamen und Passwort;
$Username = mysql_real_escape_string($_POST['username']);
$Password = mysql_real_escape_string($_POST['password']);
Wir escapen die Variablen, um bestimmte Sicherheitslücken zu decken.
Nun definieren Wir einen Query, damit Wir später Abfragen können, ob die Daten stimmen.
Dies funktioniert wird folgt;
$CheckAcc = mysql_query("SELECT id FROM user_tabelle WHERE username = '$Username' AND password = '$password' LIMIT 1");
Mit dieser Query tun Wir folgendes;
Wir suchen in der MySQL Tabelle "user_tabelle" nach einer Spalte die eine ID, den Benutzernamen und Passworts der Eingegebenen Daten.
Falls der Server eine Spalte findet, der den Benutzernamen und Passwort hat, den Wir eingegeben haben,
wollen Wir, dass der Server den Benutzer einloggt und eine Session für diesen setzt, falls nicht, geben wir eine
Fehlermeldung aus, dass die Daten nicht stimmen.
Dies funktioniert wird folgt;
if(mysql_num_rows($CheckAcc) == 1)
{
// Der Benutzer hat richtige Daten angegeben..
} else {
// Der Benutzer hat falsche Daten angegeben..
}
Nun überprüfen Wir, ob der Benutzer richtige Daten angegeben hat, falls ja, tun wir folgendes;
Wir setzen eine Session für den Benutzer, und leiten den Benutzer auf die "home.php".
Falls der Benutzer falsche Daten angegeben hat, geben wir ihn eine Fehlermeldung aus;
Was ich noch vergessen habe, wir fügen unter
Eine Zeile, was überprüft, ob der Benutzer schon bereits eingeloggt ist, falls ja, leiten wir sie vor dem Einloggen
noch auf die "home.php".
Wir brauchen noch ein Formular, den wir den Benutzer zeigen, damit der Benutzer sich einloggen kann.
Dies machen wir mit HTML, also schreiben wir UNTER den PHP Tags;
<html>
<head>
<title>Loginsystem</title>
</head>
<body>
<form method="POST">
Benutzername: <input type="text" name="username" /><br />
Passwort: <input type="password" name="password" /><br />
<input type="submit" name="submit" value="Einloggen" />
</form>
</body>
</html>
Alles anzeigen
Nun kann der Spieler sich einloggen, jetzt wechseln wir in die Datei "home.php", und starten auch dort den
PHP Tag;
Wir includen auch hier die Datei class.php;
Nun starten wir auch hier die Session für den Benutzen;
Nun überprüfen Wir, ob der Benutzer eingeloggt ist, falls nicht, leiten wir den Benutzer zum Loginformular;
Ist der Spieler jedoch eingeloggt, geben wir den Benutzer seine Daten aus.
Dafür schreiben Wir folgendes;
$PlayerInfo = mysql_fetch_object(mysql_query("SELECT * FROM user_tabelle WHERE username = '".$_SESSION['username']."' LIMIT 1");
Nun sind wir auch schon fast am Ende der Anleitung.
Wir schreiben UNTER den PHP Tags nun unseren HTML Teil;
<html>
<head>
<title>Willkommen, <?php echo $PlayerInfo->username; ?></title>
</head>
<body>
Willkommen, <?php echo $PlayerInfo->username; ?><br />
<a href="logout.php">Ausloggen</a>
</body>
</html>
Wir können mit der Funktion...
...bestimmte Felder (Informationen) des eingeloggten Spielers auslesen/ausgeben.
Nun haben wir ein kleines Loginsystem, was auf MySQL und Sessions basiert.
Fragen und Probleme können gerne im Thread geschrieben werden.
Ein Feedback, Kritik oder Verbesserungsvorschlag, währe auch erwünscht.
Ich hoffe ich könnte den meisten hier helfen.
#Peace.