Felix Riesterer: PhP speicherung von eingegebenen Daten

Beitrag lesen

Lieber Michél,

steht mal wieder vor einem Problem

das Problem lautet "Unleserlichkeit aufgrund fehlender Interpunktion". Im Ernst: Es fiel mir ziemlich schwer, den genauen Sinn Deines Postings zu verstehen, da Du fast ganz ohne Satzzeichen schreibst! Das ist keine gute Idee, wenn Du hier Hilfe suchst.

ich bekomme es einfach nicht hin das er mir die Daten untereinander schreibt.
[...]
fputs ($datei, "$benutzername $kennwort;");

1.) Die eingegebenen Daten schreibst Du "unbehandelt" in eine Textdatei. Unbehandelt ist das nicht ohne Risiko. In diesem Falle scheint es aber technisch kein Risiko zu geben, außer, dass Du ja ein Leerzeichen als Trenner benötigst. Und wenn der Browser nun mehrere solche Trennzeichen als "Benutzername" oder "Kennwort" sendet?

2.) "$benutzername $kennwort" - Siehst Du hier irgendwo Zeilenumbrüche? "\n" ist ein Zeilenumbruch. Für Windows-Kompatibilität nimmst Du besser "\r\n":

fputs ($datei, "$benutzername\r\n$kennwort\r\n";

dann kommt noch hinzu das ich bei falscher eingabe bsp. kenntwort  das er mir wieder geben soll falsches Passwort und wenn die Daten richtig eingegeben wurden soll er willkommen oder so ausgeben

Siehst Du, dass das schwer zu lesen ist?

3.) Woher willst Du wissen, welches "ein richtiger Benutzername" bzw. "ein richtiges Kennwort" ist? Alles, was Du bisher machst, ist das hier:

$datei = fopen("praxis.txt","a");
[...]
$benutzername = $_POST["benutzername"];
$kennwort = $_POST["kennwort"];

Du ermittelst ausschließlich Benutzereingaben, keinesfalls jedoch irgendwelche Vorgaben...

4.) Du solltest Deinen Anforderungen entsprechend ("Zeilenumbruch hat besondere Bedeutung") die eingegebenen Daten filtern:

$benutzername = preg_replace("~[\r\n]~", '', $_POST["benutzername"]);  
$kennwort = preg_replace("~[\r\n]~", '', $_POST["kennwort"]);

Wenn Du das willst, kannst Du für einen Zeilenumbruch auch "Ersatz" verwenden, der dann später wieder zu einem Zeilenumbruch zurückgewandelt wird, aber hier ist das sinnfrei, da ein Benutzername und ein Kennwort keine Zeilenumbrüche haben sollte.

Zurück zum <a href="praxis.html">Einloggen</a>

Einen Login-Mechanismus kannst Du so nicht verlässlich umsetzen, da Du hier ja im Grunde verlangst, dass der Benutzer jedesmal diese Login-Daten beim Aufruf Deiner Seite explizit sendet. Egal, welche weitere "geschützte" Seite er sehen möchte. Dafür haben "die bei PHP" den Session-Mechanismus erfunden, mit dem man das PHP überlässt, um nur noch die Rahmenbedingungen dafür zu schaffen. Lesetipps zu Sessions:

* Quakenet-Tutorial zu Sessions
* Jochen Stärk PHP-Tutorial Sessions

Liebe Grüße,

Felix Riesterer.

--
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)