Useraccounts in File schreiben
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
bauen
code
dank
datei
datenbank
eingabe
erstellen
fehler
frage
funktion
http
index
lernen
speichern
stern
textdatei
url
verstecken
wissen
zeile
-
Ich hab die Datei index.php :
<html> <body> <?php <h1>Wollen sie sich einen Account erstellen?<h1> <form action="createacc.php" method="post"> Name: <input type="text" name="name" /> Password: <input type="text" name="password" /> <input type="submit" /> </form> ?> </body> </html>
und die Datei createacc.php:
<html> <body> <?php if (fopen $name+ ".txt","x" == "false") echo "This User already exists"; else (fopen($name+ ".txt","x"); fwrite ($name, $password;) fclose } ?> </body> </html>
Aber ich komm mit dem code mit dem man Dateien erstellt und so nicht klar...
Kann mir da wer sagen, wie es richtig geht? Der Grundgedanke sollte klar sein: Es wird ein Account mit Passwort erstellt. Wenn der Accountname schon existiert, kommt die Fehlermeldung, dass es diesen User bereits gibt...
Danke schonmal im Vorraus...
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Letztendlich ist es wurscht, ob Du mit Dateien oder einer Datenbank arbeitest.
Für beide Varianten sollte dir, um überhaupt etwas Sinnvolles zu gestalten, die Syntax von php ein Begriff sein und Du solltest die, für die jeweilige Methode relevanten Sicherheitsmechanismen kennen.
Gesetzt den Fall, dein Code würde funktionieren, was er allein wegen einer Menge Syntaxfehler nicht kann, wäre das speichern eines Passwortes in einer Textdatei ein gravierendes Sicherheitsproblem.
Guckst Du hier: username.txt
Ich glaube nicht, daß das in deinem Sinne ist, oder?
Hinweise zur richtigen Nutzung der Dateifunktionen liefert php.net (z.B. fopen). Auch die Datenbankfunktionen sind dort dokumentiert.
Für die Grundlagen zur Arbeit mit php und MySQL kann ich dir das Tutorial von Schattenbaum.net empfehlen.
FF
Beitrag zuletzt geändert: 16.11.2009 13:18:08 von fatfreddy -
Ok, danke erstmal...
Also erstmal lerne ich die einfache Syntax (danke für die Seite), danach muss ich mich dann wohl an die Sicherheit machen...
Sorry, die Frage ist wahrscheinlich dumm, aber mit welcher Funktion kann man die Datei vor einem einfachen, dierekten Zugriff schützen? -
misterbunny schrieb:
Sorry, die Frage ist wahrscheinlich dumm, aber mit welcher Funktion kann man die Datei vor einem einfachen, dierekten Zugriff schützen?
Warum sollte die Frage dumm sein? Ganz im Gegentum ist es sinnvoll, sich frühzeitig über Schutzfunktionen Gedanken zu machen.
1.
In den Ordner mit deinen txt-Dateien legst Du eine Datei namens .htaccess (achte auf den Punkt am Anfang!)
Diese bekommt folgenden Inhalt:
Options -Indexes <Files *.txt> Order Deny,Allow Deny from all </Files>
Dadurch können nur noch die, auf dem Server laufenden Skripte auf diese Dateien zugreifen.
2.
Passworte sollten grundsätzlich nicht im Klartext abgespeichert werden.
PHP bietet eine Funktion md5(), damit wird das Passwort verschlüsselt und kann in der Datei/Datenbank abgelegt werden.
Wenn dein User später sein PW eingibt. mußt Du nur die Eingabe ebenfalls verschlüsseln und mit dem gespeicherten, verschlüsselten Passwort vergleichen.
FF -
Okay, noch ne Frage:
Ich habe den Code jetzt soweit umgeändert, dass er zumindest im Browser keine Fehler mehr anzeigt, ich hab aber einen Fehler in einer Zeile
index:
<html> <body> <h1>Wollen sie sich einen Account erstellen?<h1> <form action="createacc.php" method="post"> Name: <input type="text" name="name" /> Password: <input type="text" name="password" /> <input type="submit" /> </form> </body> </html>
createacc.php:
da ist offenbar ein Fehler<html> <body> <?php $filename=$PASTE_name.".txt";
es wird .txt ausgegeben und nicht, wie gewünscht $PASTE_name.txtif (file_exists($filename)) echo "This User already exists"; else { $handle = fopen ($filename,"w"); fwrite($PASTE_name, $PASTE_password); echo $filename;
fclose; } ?> </body> </html>
Was ist an der Zeile $filename=$PASTE_name.".txt" falsch? Wird da $PASTE_name nicht als string dazuaddiert oder so was?
mfg
MrB
Beitrag zuletzt geändert: 16.11.2009 17:54:50 von misterbunny -
Ändere deine createacc.php mal wie folgt ab:
<html> <body> <?php $name = htmlspecialchars($_POST["name"]); $password = htmlspecialchars($_POST["password"]); $filename = $name . ".txt"; if (file_exists($filename)) { echo "This User already exists"; } else { $handle = fopen($filename,"w"); fwrite($handle, $password); echo $filename; fclose($handle); } ?> </body> </html>
Das sollte eigentlich funktionieren. ;)
misterbunny schrieb:
Was ist an der Zeile $filename=$PASTE_name.".txt" falsch? Wird da $PASTE_name nicht als string dazuaddiert oder so was?
Prinzipiell schon, aber die Variable $PASTE_name hat keinen Inhalt.
Mit post übergebene Variablen liest man mit $_POST['formularfeldname'] aus.
Beitrag zuletzt geändert: 16.11.2009 18:47:59 von fatfreddy -
Hey danke, jetzt wird endlich erfolgreich die Textdatei mit den Logindaten erstellt :)
Hura, jetzt muss ich nur noch die Eingabe im Passwortfeld durch Sterne verstecken
(was ich auch noch lernen muss^^) und letzendlich das Loginfenster bauen, denn was bringt einen der Account, wenn man sich nicht einloggen kann :D
Beitrag zuletzt geändert: 17.11.2009 6:03:49 von misterbunny -
misterbunny schrieb:
Hura, jetzt muss ich nur noch die Eingabe im Passwortfeld durch Sterne verstecken
(was ich auch noch lernen muss^^)
Ganz einfach, einfach als Eingabefeld für das Passwort
anstatt<input type="password">
benutzen...<input type="text">
Beitrag zuletzt geändert: 17.11.2009 6:11:23 von buechsdeluxe -
Das geht ja schoen einfach, ich mag php irgendwie...
-
misterbunny schrieb:
Das geht ja schoen einfach, ich mag php irgendwie...
Ich auch, aber du solltest wissen dass der Input-Tag nichts mit PHP zu tun hat Hierbei handelt es sich um reines HTML was im Gegensatz zu PHP auch keine Programmiersprache sondern eine Auszeichnungssprache ist. Aber das nur am Rande
Beitrag zuletzt geändert: 17.11.2009 7:34:42 von buechsdeluxe -
buechsdeluxe schrieb:
misterbunny schrieb:
Das geht ja schoen einfach, ich mag php irgendwie...
Ich auch, aber du solltest wissen dass der Input-Tag nichts mit PHP zu tun hat Hierbei handelt es sich um reines HTML was im Gegensatz zu PHP auch keine Programmiersprache sondern eine Auszeichnungssprache ist. Aber das nur am Rande
Hehe, okay.
Aber ich finds irgendwie schon erstaunlich, wie einfach man doch so ne Seite machen kann...
Beitrag zuletzt geändert: 17.11.2009 8:02:42 von misterbunny -
Hehe, aber eigtl ist das ja noch die schwierigere Variante
Am allereinfachsten sind natürlich WYSIWYG-Editoren
-
misterbunny schrieb:
Hura, jetzt muss ich nur noch die Eingabe im Passwortfeld durch Sterne verstecken
(was ich auch noch lernen muss^^) und letzendlich das Loginfenster bauen, denn was bringt einen der Account, wenn man sich nicht einloggen kann :D
Und nicht vergessen, die Passworte verschlüsselt zu speichern.
buechsdeluxe schrieb:
Am allereinfachsten sind natürlich WYSIWYG-Editoren
Handarbeit bringt aber einen deutlich höheren Lerneffekt.
FF -
Hehe, ja die Verschlüsselung sollte auch noch rein o0
Aber ich freu mich im Moment erstmal, dass alles wie geplant läuft... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage