Moin , Elitepvpers
Heute will ich euch zeigen, wie man in PHP einen ganz einfachen Login Erstellt.
Hoffe es wird euch gefallen & bzw hoffentlich hilft es euch.
~Vorwort~
Schritt 1: Neuer Account
Zuerst möchten wir mit dem Script einen neuen Account anlegen, damit sich der User evt. später von alleine Registieren kann.
Dazu brauchen wir ein ganz normales HTML-Formular mit 3 Feldern.
Einmal ein Feld wo man seinen Benutzernamen (Name: username) eingibt, dann ein Feld wo man sein Passwort eingibt (Name: passwort) und noch ein Feld, wo man sein Passwort bestätigt (Name: passwort2).
Das sieht ca. so aus:
Jetzt kommen wir zum intressanten Teil, dem PHP Script. Dieser Script soll den Benutzername und das Passwort nur speichern.
Zuerst fragen wir die eingegebenden Daten ab:
Danach überprüfen wir zuerst, ob überhaupt die beiden Passwörter identisch sind, dafür benutzen wir einfach eine if-Anweisung.
Natürlich wollen wir auch verhindern, das ein Benutzername doppelt vorkommt, sonst gibt es später beim Login Probleme, deswegen erstellen wir ein leeren Array.
Zum schluss verschlüsseln wir noch das Passwort mit der Funktion md5.
Jetzt wollen wir ja nachgucken, ob es den Benutzernamen schon gibt, deswegen öffnen wir die Datei, in der die Benutzernamen und Passwörter gespeichert werden.
Diese Befehle müssen jetzt natürlich auch noch alle in den if Teil.
Wir öffnen jetzt die Datei, und lesen sie immer Stück für Stück aus. Dabei legen wir nur den Benutzernamen in das Array $user_vorhanden ab.
Wenn in dem Array alle Benutzernamen gespeichert wurden, wird die Datei noch geschlossen.
Jetzt haben wir alle Benutzernamen in dem Array $user_vorhanden, aber jetzt wollen wir gucken, on der Benutzername schon vorhanden ist. Dafür können wir doch ganz einfach in_array benutzen.
Dieser Befehl muss auch wieder in den ersten if-Teil, denn wir wollen die Befehle ja nur ausführen lassen, wenn die Passwörter identisch waren.
Die if-Anweisung sieht jetzt so aus:
Mit in_array schauen wir ob $username, dieser Wert stammt aus dem Formular, schon in dem Array gespeichert wurden, wenn dies nicht der Fall ist, brauchen wir else..
Diese Anweisungen stehen immer noch im ersten if Teil.
Jetzt speichern wir den Benutzername und das verschlüsselte Passwort in der Text-Datei user.txt. Wenn Ihr diesen Script benutzt, sollte keiner den Namen der Datei wissen, damit man Useraccounts nicht so leicht hacken kann.
Der fertige Script sieht dann so aus (eintragen.php):
Schritt 2: Login
Jetzt kommen wir zum Login.
Dafür brauchen wir natürlich wieder ein Formular mit zwei Feldern (Username und Passwort mit den Namen: username und password).
Ca so:
Das Formular ist weiter nicht intressant, aber der PHP Script. Wie immer fragen wir zuerst die beiden Felder ab, und verschlüsseln das Passwort mit der md5-Funktion.
Außerdem geben wir der Variable $log noch den Inhalt 0, warum werdet Ihr später sehen.
Im nächsten Schritt öffnen wir die Datei (user.txt) und lesen diese immer nach und nach.
Dabei trennen wir wieder den Benutzername von dem Passwort, damit wir beides überprüfen können.
Dann schauen wir, ob die Eingaben aus dem Formular mit denen aus der Datei übereinstimmen.
Wenn dies der Fall ist, wird der Variable $log der Inhalt 1 zugeordnet.
Aber warum steht da $passwort==trim($userdata[1])?
Ganz einfach, mit trim entfernen wir am Anfang und am Ende des Passwortes überflüssige Zeichen, z.B. Leerzeichen und auch ein Zeilenumbruch.
Wir müssen dies machen, weil die Passwörter immer mit einem Zeilenumbruch am Ende gespeichert werden.
Würden wir dies nicht machen, würde der Script nicht funktionieren, weil ein Wort mit einem Zeilenumbruch am Ende nicht das gleiche Wort ist, als wenn es keinen Zeilenumbruch hat.
Wenn jetzt das Passwort und der Benutzername richtig ist, gelangt der User in den Userbereich (hier: Hallo $username).
Wenn kein Benutzername bzw. Passwort passt, dann hat die Variable $log immer noch den Inhalt 0.
Das können wir wiederrum mit einer if-Anweisung überprüfen.
Das wars auch schon.
Am Ende sieht die Datei so aus:
Noch ein Tipp:
In der Datei, in der die Passwörter gespeichert werden, die sollte immer geheim bleiben.
Thanks Muss nicht sein.
Heute will ich euch zeigen, wie man in PHP einen ganz einfachen Login Erstellt.
Hoffe es wird euch gefallen & bzw hoffentlich hilft es euch.
~Vorwort~
Schritt 1: Neuer Account
Zuerst möchten wir mit dem Script einen neuen Account anlegen, damit sich der User evt. später von alleine Registieren kann.
Dazu brauchen wir ein ganz normales HTML-Formular mit 3 Feldern.
Einmal ein Feld wo man seinen Benutzernamen (Name: username) eingibt, dann ein Feld wo man sein Passwort eingibt (Name: passwort) und noch ein Feld, wo man sein Passwort bestätigt (Name: passwort2).
Das sieht ca. so aus:
Code:
<form action="eintragen.php" method="post"> Dein Username:<br> <input type="text" size="24" maxlength="50" name="username"><br><br> Dein Passwort:<br> <input type="password" size="24" maxlength="50" name="passwort"><br> Passwort wiederholen:<br> <input type="password" size="24" maxlength="50" name="passwort2"><br> <input type="submit" value="Abschicken"> </form>
Jetzt kommen wir zum intressanten Teil, dem PHP Script. Dieser Script soll den Benutzername und das Passwort nur speichern.
Zuerst fragen wir die eingegebenden Daten ab:
Code:
<?php $username = $_POST["username"]; $password = $_POST["passwort"]; $password2 = $_POST["passwort2"]; ?>
Danach überprüfen wir zuerst, ob überhaupt die beiden Passwörter identisch sind, dafür benutzen wir einfach eine if-Anweisung.
Natürlich wollen wir auch verhindern, das ein Benutzername doppelt vorkommt, sonst gibt es später beim Login Probleme, deswegen erstellen wir ein leeren Array.
Zum schluss verschlüsseln wir noch das Passwort mit der Funktion md5.
Code:
<?php
if ($password == $password2)
{
$user_vorhanden = array();
$passwort = md5($password);
}
else
{
echo "Die Passwörter waren nicht identisch
<br><a href=\"eintragen.html\">zurück</a>";
}
?>
Jetzt wollen wir ja nachgucken, ob es den Benutzernamen schon gibt, deswegen öffnen wir die Datei, in der die Benutzernamen und Passwörter gespeichert werden.
Diese Befehle müssen jetzt natürlich auch noch alle in den if Teil.
Code:
<?php
if ($password == $password2)
{
$user_vorhanden = array();
$passwort = md5($password);
$userdatei = fopen ("user.txt","r");
while (!feof($userdatei))
{
$zeile = fgets($userdatei,500);
$userdata = explode("|", $zeile);
array_push ($user_vorhanden,$userdata[0]);
}
fclose($userdatei);
}
?>
Wir öffnen jetzt die Datei, und lesen sie immer Stück für Stück aus. Dabei legen wir nur den Benutzernamen in das Array $user_vorhanden ab.
Wenn in dem Array alle Benutzernamen gespeichert wurden, wird die Datei noch geschlossen.
Jetzt haben wir alle Benutzernamen in dem Array $user_vorhanden, aber jetzt wollen wir gucken, on der Benutzername schon vorhanden ist. Dafür können wir doch ganz einfach in_array benutzen.
Dieser Befehl muss auch wieder in den ersten if-Teil, denn wir wollen die Befehle ja nur ausführen lassen, wenn die Passwörter identisch waren.
Die if-Anweisung sieht jetzt so aus:
Code:
<?php
if ($password == $password2)
{
$user_vorhanden = array();
$passwort = md5($password);
$userdatei = fopen ("user.txt","r");
while (!feof($userdatei))
{
$zeile = fgets($userdatei,500);
$userdata = explode("|", $zeile);
array_push ($user_vorhanden,$userdata[0]);
}
fclose($userdatei);
if (in_array($username,$user_vorhanden))
{
echo "Username schon vorhanden <br>
<a href=\"eintragen.html\">zurück</a>";
}
}
?>
Mit in_array schauen wir ob $username, dieser Wert stammt aus dem Formular, schon in dem Array gespeichert wurden, wenn dies nicht der Fall ist, brauchen wir else..
Diese Anweisungen stehen immer noch im ersten if Teil.
Code:
<?php
if ($password == $password2)
{
$user_vorhanden = array();
$passwort = md5($password);
$userdatei = fopen ("user.txt","r");
while (!feof($userdatei))
{
$zeile = fgets($userdatei,500);
$userdata = explode("|", $zeile);
array_push ($user_vorhanden,$userdata[0]);
}
fclose($userdatei);
if (in_array($username,$user_vorhanden))
{
echo "Username schon vorhanden <br>
<a href=\"eintragen.html\">zurück</a>";
}
else
{
$eintrag ="$username|$passwort";
$userdatei = fopen ("user.txt","a");
fwrite($userdatei, "$eintrag\n");
fclose($userdatei);
echo "$username, deine Anmeldung war
erfolgreich<br>
<a href=\"login.html\">zum Login</a>";
}
}
else
{
echo "Die Passwörter waren nicht identisch <br>
<a href=\"eintragen.html\">zurück</a>";
}
?>
Der fertige Script sieht dann so aus (eintragen.php):
Code:
<?php
$username = $_POST["username"];
$password = $_POST["passwort"];
$password2 = $_POST["passwort2"];
if ($password == $password2)
{
$user_vorhanden = array();
$passwort = md5($password);
$userdatei = fopen ("user.txt","r");
while (!feof($userdatei))
{
$zeile = fgets($userdatei,500);
$userdata = explode("|", $zeile);
array_push ($user_vorhanden,$userdata[0]);
}
fclose($userdatei);
if (in_array($username,$user_vorhanden))
{
echo "Username schon vorhanden <br>
<a href=\"eintragen.html\">zurück</a>";
}
else
{
$eintrag ="$username|$passwort";
$userdatei = fopen ("user.txt","a");
fwrite($userdatei, "$eintrag\n");
fclose($userdatei);
echo "$username, deine Anmeldung war erfolgreich
<br><a href=\"login.html\">zum Login</a>";
}
}
?>
Schritt 2: Login
Jetzt kommen wir zum Login.
Dafür brauchen wir natürlich wieder ein Formular mit zwei Feldern (Username und Passwort mit den Namen: username und password).
Ca so:
Code:
<form action="login.php" method="post"> Dein Username:<br> <input type="text" size="24" maxlength="50" name="username"><br><br> Dein Passwort:<br> <input type="password" size="24" maxlength="50" name="password"><br> <input type="submit" value="Login"> </form>
Das Formular ist weiter nicht intressant, aber der PHP Script. Wie immer fragen wir zuerst die beiden Felder ab, und verschlüsseln das Passwort mit der md5-Funktion.
Außerdem geben wir der Variable $log noch den Inhalt 0, warum werdet Ihr später sehen.
Code:
<?php $username = $_POST["username"]; $passwort = $_POST["password"]; $passwort = md5($passwort); $log = 0; ?>
Dabei trennen wir wieder den Benutzername von dem Passwort, damit wir beides überprüfen können.
Dann schauen wir, ob die Eingaben aus dem Formular mit denen aus der Datei übereinstimmen.
Wenn dies der Fall ist, wird der Variable $log der Inhalt 1 zugeordnet.
Code:
<?php
$userdatei = fopen ("user.txt","r");
while (!feof($userdatei))
{
$zeile = fgets($userdatei,500);
$userdata = explode("|", $zeile);
if ($userdata[0]==$username and
$passwort==trim($userdata[1]))
{
echo "Hallo $username";
$log = 1;
}
}
fclose($userdatei);
?>
Aber warum steht da $passwort==trim($userdata[1])?
Ganz einfach, mit trim entfernen wir am Anfang und am Ende des Passwortes überflüssige Zeichen, z.B. Leerzeichen und auch ein Zeilenumbruch.
Wir müssen dies machen, weil die Passwörter immer mit einem Zeilenumbruch am Ende gespeichert werden.
Würden wir dies nicht machen, würde der Script nicht funktionieren, weil ein Wort mit einem Zeilenumbruch am Ende nicht das gleiche Wort ist, als wenn es keinen Zeilenumbruch hat.
Wenn jetzt das Passwort und der Benutzername richtig ist, gelangt der User in den Userbereich (hier: Hallo $username).
Wenn kein Benutzername bzw. Passwort passt, dann hat die Variable $log immer noch den Inhalt 0.
Das können wir wiederrum mit einer if-Anweisung überprüfen.
Code:
<?php
if ($log==0)
{
echo "Zugriff verweigert";
}
?>
Am Ende sieht die Datei so aus:
Code:
<?php
$username = $_POST["username"];
$passwort = $_POST["password"];
$passwort = md5($passwort);
$log = 0;
$userdatei = fopen ("user.txt","r");
while (!feof($userdatei))
{
$zeile = fgets($userdatei,500);
$userdata = explode("|", $zeile);
if ($userdata[0]==$username and
$passwort==trim($userdata[1]))
{
echo "Hallo $username";
$log = 1;
}
}
fclose($userdatei);
if ($log==0)
{
echo "Zugriff verweigert";
}
?>
In der Datei, in der die Passwörter gespeichert werden, die sollte immer geheim bleiben.
Thanks Muss nicht sein.