PHP - Komplettes Loginsystem mit Textdateien

Noch mal zu meinem Vorschlag, gleich ein PHP-Skript zu erzeugen(sind ja im Endeffekt auch nur Textdateien):

.htuserdb
PHP:
$userdb=array();
$userdb['alexander']=array('mailadresse','md5(passwort)');
$userdb['sven']=array('mailadresse','md5(passwort)');
diese Datei includest du beim Login.

Wenn du prüfen willst, ob ein Benutzer existiert:
PHP:
if(isset($userdb[strtolower('Benutzername')]))
Wenn du prüfen willst, ob das Passwort stimmt:
PHP:
if(md5('passwort')==($userdb[strtolower('Benutzername')][1]))
...usw.

Bei sehr vielen Benutzern könntest du mehrere "htuserdb"-Dateien verwenden, bspw. unterteilt nach Anfangsbuchstaben:
.htuserdb_a,.htuserdb_b,usw.

Der Zugriff dürfte so ungleich schneller sein, weil die Daten nicht erst in Variablen überführt werden müssen.
 
Alexander12 hat gesagt.:
Was sagt ihr dazu? ;)
Ich find es nicht gut. Was machst du zum Beispiel, wenn zwei User das gleiche Passwort haben? Soll ja noch immer viele Leute geben, die Standardpasswörter wie etwa Passwort nutzen. Passwörter mit Sonderzeichen lässt du damit auch nicht zu. Dazu wird das Passwort auch noch unverschlüsselt gespeichert, mir wäre nicht wohl dabei (auch dann nicht, wenn du es außerhalb des Dokumentenverzeichnisses speicherst).

Du hast auch noch immer nicht gesagt, ob du SQLite nutzen kannst. Das scheint mir für dich wirklich die beste Lösung. Wobei ich den Vorschlag von Sven auch nicht so schlecht finde, ich persönlich hab aber echte Datenbanken lieber.
 
Hi.

@Sven:

Der Vorschlag ist echt gut! ich werde ihn jetzt sofort ausprobieren. :)

MfG Alexander12


EDIT:
Hmm.. Ich krieg das irgendwie nicht zum Laufen:
Hier mein Code:
login.php:
PHP:
<?php
include("userdb.php");
$username = $_POST["username"];
$passwort = $_POST["passwort"];
if(md5($passwort)==($userdb[strtolower('Benutzername')][1]))
{
	echo("Hallo $username");
}
else
{
	echo("Login fehlgeschlagen, Falsche Daten!");
}
?>
In der Datei userdb.php stehen nur diese 2 Zeilen:

Code:
$userdb=array();
$userdb['Alexander12']=array('aa@aa.de','md5(hallo)');

Hab' Ich was Falsch gemacht?

MfG Alexander12
 
Zuletzt bearbeitet:
Hi.

Ich habe jetzt ein Hoster gefunden der günstig ist und eine MySQL Datenabank bereitstellt!( :) :) :) )!! Da brauch Ich wahrscheinlich gar nicht zu Fragen, MySQL wird die beste Lösung für mein Problem sein. Ihr hättet es wahrscheinlich gleich so gemacht. Vielleicht mach ich dazu nen neuen Thread auf, ich weiß noch nicht. Trotzdem Vielen, Vielen Dank für eure Antworten, diese Forum ist echt super, das muss ich sagen! ;)

MfG Alexander12
 
Alexander12 hat gesagt.:
Hab' Ich was Falsch gemacht?

Da muss statt md5(hallo) natürlich der md5()-Hash von hallo rein :-)
(der Array-Schlüssel muss ebenfalls kleingeschrieben werden)

Code:
$userdb['alexander12']=array('aa@aa.de','598d4c200461b81522a3328565c25f7c');

und dann:
PHP:
<?php
include("userdb.php");
$username = $_POST["username"];
$passwort = $_POST["passwort"];
if( isset($userdb[strtolower($username)])
      && 
    md5($passwort)==$userdb[strtolower($username)][1] 
  )
{
    echo("Hallo $username");
}
else
{
    echo("Login fehlgeschlagen, Falsche Daten!");
}
?>
 
Hi Sven.

Danke für die ausfühliche Erklärung. Ich werde das jetzt ausprobieren. Wenn es funktioniert dann bleib' ich bei meinem Hoster, ansonsten muss ich wohl in den Sauren Apfel beißen und den Hoster wechseln.

MfG Alexander12
 
Hi.

Es funktioniert!! :)
Kann ich mit einem Registrierungs-Formular eigentlich Daten zu dem Array (in userdb.php) hinzufügen oder geht das nur von Hand mit dem Editor? :suspekt:

MfG Alexander12
 
per [phpf]fputs[/phpf] kannst du von einem anderen PHP-Skript aus in diese Datei schreiben, was du willst...du musst also nicht persönlich aktiv werden.

Vorraussetzung ist, dass du bei fopen() einen Pfad im lokalen Dateisystem angibst(also ohnne http://)... der Rest funktioniert wie auch bei einer Textdatei.
Achte aber darauf, dass der Inhalt der Datei von PHP-Tags eingeschlossen sein muss.
 
Alexander12 hat gesagt.:
.....Aber den Hoster wechseln, ich weiß nicht, das kostet und kostet, ich bin doch auch nur ein einfacher Schüler.....
Warum nicht?
Du kannst ja auch verschiedene Hoster nehmen..... wenn Du denn meinst dass Du mit deinem jetzigen soweit zufrieden bist.
Ausserdem gibt es auch kostenlose Hoster..... mit MySQL Unterstützung.
Spontan fallen mir da Funpic und Cybton ein..... ich kann zwar nichts zu diesern Hostern sagen, aber ich bin mir zu 101,5% ;) sicher dass Du hier im Forum ein paar Einträge findest.

Ich bin sogar der Meinung dass es heute einfacher ist einen Free Hoster mit MySQL zu finden, als vor ein paar Jahren Free Hoster mit CGI Unterstützung.
 
Zurück