Fehler bei Übertragung zur Datenbank
Fehler bei Übertragung zur Datenbank
Hi,
Habe ein Problem mit einem Code eines Mitgliederprofils.
Immer wenn man auf Speichern klickt, wird der Datensatz des jeweiligen Users komplett in der DB geleert. Nur noch der Username bleibt erhalten. Wenn man was per Hand in die DB (Per phpmyadmin) schreibt, bleibt es logischerweise erhalten und wird auch in diesem Formular angezeigt. Wenn man es aber über das Formular ändern will, werden die Einträge in der DB gelöscht. Und ich habe keine Ahnung warum.
Wäre schön, wenn mir jemand helfen könnte =)
Hier der Link zur Datei im TXT-Format:
http://www.hosting42.de/test/profil.txt
Danke für eure Hilfe!!!
Gruß
Tobi
Habe ein Problem mit einem Code eines Mitgliederprofils.
Immer wenn man auf Speichern klickt, wird der Datensatz des jeweiligen Users komplett in der DB geleert. Nur noch der Username bleibt erhalten. Wenn man was per Hand in die DB (Per phpmyadmin) schreibt, bleibt es logischerweise erhalten und wird auch in diesem Formular angezeigt. Wenn man es aber über das Formular ändern will, werden die Einträge in der DB gelöscht. Und ich habe keine Ahnung warum.
Wäre schön, wenn mir jemand helfen könnte =)
Hier der Link zur Datei im TXT-Format:
http://www.hosting42.de/test/profil.txt
Danke für eure Hilfe!!!
Gruß
Tobi
Was mir mal auffält:
Da sollte readonly stehen, denk ich...
Code: Alles auswählen
<input type="text" value="<?PHP echo $user[name];?>" redonly disabled name="formtext1">
- gn#36
- Ehrenadmin
- Beiträge: 9313
- Registriert: 01.10.2006 16:20
- Wohnort: Ganz in der Nähe...
- Kontaktdaten:
Eine Sache zum Programmierstil:
Außerdem gehst du davon aus dass register_globals aktiviert ist. Das ist nicht zwingend auf allen Servern der Fall, wenn es nicht so ist (und aus Sicherheitsgründen ist es sehr gut wenn das nicht so ist) enthalten sämtliche Variablen $email, $anrede, $vorname... nichts, da sie nicht initialisiert wurden. Dem entsprechend wird auch das "nichts" in die Datenbank geschrieben, der Datensatz wird geleert (zumindest wenn du die Daten in $user vorher richtig gesetzt hast).
Über die Sicherheit deines Skriptes solltest du dir auch noch mal erhebliche Gedanken machen. Du verwendest - wenn register_globals aktiviert ist - nicht nur direkt vom User kommende Daten ungeprüft in einem Query, sondern gibst sie überdies auch offenbar ungeprüft aus, für XSS ist das ein gefundenes Fressen. Man darf sich als Faustregel auf nichts verlassen, das vom User kommt, grundsätzlich sind alle Daten erst einmal als böswillig zu betrachten, daher sollte man sämtliche Daten vor der Ausgabe oder der Verwendung in einem Query prüfen, z.b. ob Zahlenwerte auch tatsächlich Zahlen sind (kann man per intval() erzwingen, oder per casting für andere Datentypen), man kann per htmlspecialchars oder htmlentities dafür sorgen, dass der ausgegebene Text auch tatsächlich nur Text ist und nicht HTML Code, ...
Vor allem bei so sensiblen Daten wie denen die du hier offenbar bearbeiten willst sollte man was die Sicherheit angeht sehr vorsichtig sein.
hast du diese ganzen Konstanten (anrede, vorname, email ...) die du verwendest alle in einer anderen Datei definiert? ansonsten ist das ziemlich unsauberer Stil, einfach nicht definierte Konstanten zu verwenden. Eigentlich sollten das ja nur Strings mit diesem Wert sein, also 'anrede', 'vorname', 'email' ...$db[anrede]
Außerdem gehst du davon aus dass register_globals aktiviert ist. Das ist nicht zwingend auf allen Servern der Fall, wenn es nicht so ist (und aus Sicherheitsgründen ist es sehr gut wenn das nicht so ist) enthalten sämtliche Variablen $email, $anrede, $vorname... nichts, da sie nicht initialisiert wurden. Dem entsprechend wird auch das "nichts" in die Datenbank geschrieben, der Datensatz wird geleert (zumindest wenn du die Daten in $user vorher richtig gesetzt hast).
Über die Sicherheit deines Skriptes solltest du dir auch noch mal erhebliche Gedanken machen. Du verwendest - wenn register_globals aktiviert ist - nicht nur direkt vom User kommende Daten ungeprüft in einem Query, sondern gibst sie überdies auch offenbar ungeprüft aus, für XSS ist das ein gefundenes Fressen. Man darf sich als Faustregel auf nichts verlassen, das vom User kommt, grundsätzlich sind alle Daten erst einmal als böswillig zu betrachten, daher sollte man sämtliche Daten vor der Ausgabe oder der Verwendung in einem Query prüfen, z.b. ob Zahlenwerte auch tatsächlich Zahlen sind (kann man per intval() erzwingen, oder per casting für andere Datentypen), man kann per htmlspecialchars oder htmlentities dafür sorgen, dass der ausgegebene Text auch tatsächlich nur Text ist und nicht HTML Code, ...
Vor allem bei so sensiblen Daten wie denen die du hier offenbar bearbeiten willst sollte man was die Sicherheit angeht sehr vorsichtig sein.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Hehe zur Sicherheit wollt ich auch grad was sagen 
Aber zum Problem:
Kann sein, dass ich grad auf der Seife steh, aber was bedeutet das name="profil" hier?

Aber zum Problem:
Kann sein, dass ich grad auf der Seife steh, aber was bedeutet das name="profil" hier?
Code: Alles auswählen
<form action="home.php?page=profil&step=1" Method="post"name="profil">
Hi, also zunächst ist es nicht mein Script. Dass Register_Globals aktiviert ist, stimmt, sonst würde ja gar nichts da funktionieren. Das mit der Sicherheit ist schon richtig, aber so ist nunmal das Leben
Das "name="profil", scheint sich wohl auf das Formular zu beziehen, da es ja eben das "Profil-Formular" ist.
Danke für die Antworten

Das "name="profil", scheint sich wohl auf das Formular zu beziehen, da es ja eben das "Profil-Formular" ist.
Danke für die Antworten
-
- Mitglied
- Beiträge: 75
- Registriert: 19.02.2007 04:47
- Wohnort: Berlin
- Kontaktdaten:
An welcher Stelle werden die ganzen Variablen denn aus
dem POST-Array herausgeholt? Passiert das in einer der
Copy-Strecken?
Mir stellt sich auch die Frage, ob das Script überhaupt
jemals funktioniert hat.
Gruß Ron
dem POST-Array herausgeholt? Passiert das in einer der
Copy-Strecken?
Mir stellt sich auch die Frage, ob das Script überhaupt
jemals funktioniert hat.
Gruß Ron
Wer nicht gelebt hat, der kann auch nicht sterben.
http://www.RonGS.de
http://www.Berlin-Brandenburg-Biker.de
http://www.RonGS.de
http://www.Berlin-Brandenburg-Biker.de