PHP - Komplettes Loginsystem mit Textdateien

Alexander12

Erfahrenes Mitglied
Hi.

Ich will ein komplettes Loginsystem für meine Webseite schreiben, in PHP (natürlich), hab' auch schon einiges gemacht (Formulare, ein paar Skripte etc. ;-) ). Mein Anbieter stellt leider keine MySQL Datenbank bereit, deswegen mit Textdateien. Beim registrieren soll der User eine fortlaufende ID bekommen, einen Benutzernamen eingeben, ein Passwort mit anschließender Wiederholung, die E-Mailadresse und es soll ein Bild angezeigt werden mit Buchstaben, die der User eingeben muss, damit es auch wirklich ein Mensch ist, wo sich registriert. In der Textdatei steht jede Zeile für einen User.
Nun meine erste Frage:
Kann ich in PHP wie in C#.NET(da weiß ich wies geht) mehrere Parameter gleichzeitig in eine Zeile schreiben?
Bei C# kann ich das so machen: {1},{2},{3}, name, email, passwort
Hier mein Code in PHP:

PHP:
<?php 
$name = "Hallo";
$userID = "1"
$passwort = "hier";
$email = "aa@aa.de";
//und so weiter ...
$datei = fopen("user.txt","w+");
fputs($datei, $name);
?>
Weiß jemand wie ich den Code änderm muss, damit ich alle Parameter ($userID, $name, etc.) in eine Zeile quetschen kann und dass Sie durch ein Semikolon o.ä. getrennt sind? Da komm ich echt nicht weiter.
Nun meine zweite Frage:
Also so soll es dann in der Textdatei aussehen, in die wir oben eintragen:

1;Hallo;hier;aa@aa.de;30.08.05

Zum auslesen hab' ich auch schon ein Script, aber das passt da nicht, Der Benutzer soll sich ja mit den Felder ID, Name, Passwort einloggen. Nun soll er die Zeile auslesen in der die eingegebene ID steht und alle Werte miteinander vergleichen. Weiß jemand wie man das so auslesen kann und gibt mir einen Tipp?
Den Rest hab' ich alles schon geproggt.

Nun noch 'ne Frage:
Wenn ihr gar keine Datenbank zur Verfügung hättet (also so wie ich :mad: ), würdet ihr es ganz anders machen? Vielleicht mit Sessions, aber da kenn ich mich noch nicht so gut aus ...

Vielen, Vielen Dank für eure Antworten schon Mal!! :)

MfG Alexander12
 
Hallo!

Ich glaube so müsste es klappen:
PHP:
fputs($datei, $userID.";".$name.";".$passwort.";".$email);
Ich weiss aber nicht wie man damit ein Login realisieren kann.
Du solltest dann die Passwörter natürlich verschlüsseln.

Ohne Datenbank..... kommt halt drauf an was für eine Seite es werden soll.
Das Einfachste währe sicherlich über .htaccess.
Eine andere Möglichkeit währe es, auf fertige Lösungen zurückgreifen (so gibt es z.b. auch Foren die ohne MySQL auskommen).
Oder Du wechselst dein Hoster. ;)

Gruss Dr Dau
 
Du koenntest die User-Daten in einen Array packen und diesen serialisiert in die Datei schreiben.
Beim auslesen wandelst Du das ganze wieder in einen Array um.
Der Vorteil der Geschichte ist, dass Du dann gleich alle Nutzerdaten in einem Array hast.
Du koenntest dann so in einem 2-dimensionalen Array alle User speichern und musstest nicht mit 2 Millionen Variablen hantieren.
Ausserdem waere es so auch einfach die Anzahl der User festzustellen und und und...

Schau Dir dazu mal serialize() und unserialize() an.

Was ist eigentlich aus meinem Vorschlag mit SQLite geworden?
Keine Ahnung? Keine Lust? Keine Unterstuetzung in PHP?
 
Zuletzt bearbeitet:
BSA hat gesagt.:
Ich würde es mir einfacher machen und einfach den Hoster wechseln.
Das groesste Problem was ich bei Textdateien, und auch bei SQLite, sehe ist die Sicherheit.
Denn man brauchst nur im Browser den Namen der Textdatei eingeben und schon hat man alle Zugangsdaten.
Ich weiss nicht wie SQLite speichert, will gleich mal was damit rumspielen, aber ich denke nicht, dass es wesentlich sicherer ist, wenn ueberhaupt.

Daher ist der Vorschlag von BSA schon garnicht so schlecht.
Insbesondere User-Daten sind mit Vorsicht zu behandeln und sollten so gut wie moeglich geschuetzt werden.

Nachtrag:
Ich hab mir grad mal SQLite angesehen und muss sagen: Ist eigentlich keine schlechte Sache.
Aber: Es scheint kein Auto_Increment zu geben, fuer die IDs muss man selbst sorgen, was aber mit wenigen Zeilen Code machbar ist.
UNSIGNED INTs scheint es auch nicht zu geben. Aber naja, es gibt schlimmeres.
Was aber, im Hinblick auf das Thema User-Daten, stoert, ist dass die SQLite-Datei recht einfach zu lesen ist.
Aber fuer eine Bildergallerie ist's okay.
Ich hatte ja hier vor einer Weile mal eine Gallerie (in 3 Ausfuehrungen) auf MySQL-Basis gepostet. Diese hab ich mal fix auf SQLite umgestrickt.
Funktioniert ganz gut. Wie gesagt, ein paar Anpassungen, aber nichts wildes.
 
Zuletzt bearbeitet:
Ich würd wohl keine Textdateien nehmen, sondern gleich PHP-Skripte erzeugen, wo die Userdaten in Variablen/Arrays gespeichert sind.

Sicherheitsprobleme sehe ich nicht unbedingt... die Sachen kann man ja schliesslich ausserhalb des DOCUMENT_ROOT lagern.
Oder man gibt ihnen eine andere Dateiendung und unterbindet den Zugriff per .htaccess
(eine Datei namens .htuserdb wäre schliesslich auch nicht per HTTP aufrufbar...includen o.ä. könnte man sie aber trotzdem jederzeit)
 
Hi.

@Dr Dau:
Danke für den Tipp mit dem Code!
Aber den Hoster wechseln, ich weiß nicht, das kostet und kostet, ich bin doch auch nur ein einfacher Schüler ........

@reptiler:
Ich werde mir das mit dem seralisieren gleich heute Mal angucken.
SQLite ist nicht so das richtige find ich, es ist halt ein Dos-Programm. Da fände ich Access schon besser. Wenn mir da jemand Hilfe geben könnte (Verbindung, Auslesen; Schreiben) das wäre echt super!!

Deinen Vorschlag (das ist jetz @Sven Mintel) mit *.htaccess find ich auch interessant. Hab' ich schon oft hier im Forum gehört, scheint gut zu sein.

Aber um nochmal aufs Access zurückzukommen; Ich hab' da Mal Code zum connecten entdeckt:
Code:
if (!$conn = new COM("ADODB.Connection"))
exit("Unable to create an ADODB connection<br>");
$strConn = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("test.mdb"); 
$conn->open($strConn);
Ist das überhaupt was?

MfG Alexander12
 
SQLite ist kein DOS-Programm, sondern eine platformunabhaengige Library, urspruenglich wahrscheinlich unter einem Unix entwickelt und dann portiert.
www.sqlite.org hat gesagt.:
SQLite is a small C library that implements a self-contained, embeddable, zero-configuration
Die Libraries sind in PHP5 bereits enthalten und Du brauchst nichts weiter.
Denn es ist, wie gesagt, "embeddable", also "einbettbar", was bedeutet, dass nichts weiter benoetigt wird.
 
Hi.

Um nochmal auf die Textdokumente zurückzukommen:
Ich hab' eine wahnsinnig tolle Idee und ich wollte nun eure Meinung hören:

Ich habe jetzt ein Formular mit dem man sich registriert:
4 Textboxen, eine für Benutzername, 2 für Passwort(also mit wiederholung) und noch eine für die Emailadresse. und ein Submit Button (ACTION="register.php".

Nun das Skript "register.php":

Das Skript bekommt die 4 Werte per $_POST. Das Skript erstellt 2 Textdokumente.
Wenn man sich z.B. mit diesen Daten registriert:

- Benutzername: "Alexander"
- Passwort: "hallo"
- Passwort(wdh):"hallo"
- Email: "aa@aa.de

Dann erstellt das Skript diese 2 Textdokumente:
1. Dokument:
Alexander.txt
Inhalt: aa@aa.de
2. Dokument:
hallo.txt
Inhalt: aa@aa.de

Das Skript überprüft natürlich vor dem Registrieren natürlich ob die schon vorhanden sind und ob die Passwörter identisch sind. :-)

Wenn Man sich nun einloggt, öffnet das Skript login.php die Textdatei(wenn vorhanden) des eingegebenen Usernamens und das des eingegebenen Passworts die er $_POST (also hier wäre das dann, wenn wir die Daten von oben nehmen: Alexander.txt und hallo.txt). Dann liest er die Inhalte(also die Emailadresse) bei beiden aus und vergleicht Sie. Wenn Sie gleich sind, ist der User eingeloggt.

Was sagt ihr dazu? ;)
Würdet ihr noch was verändern?

MfG Alexander12
 
Zurück