Variable erweitern Problem

  • Hallo,
    ich habe hier ein problem, und zwar habe ich ein skript zum ändern seines profils über mysql geschrieben, aber bei der auswertung der daten, bei welcher ich die Variable $update immer erweitern möcht eje nachdem eben was alles geändert wurde, nun erweitert sich die variable gar nicht bzw wenn mein sein passwort ändertdann kommt dass noch zu variable hinzu allerdings der rest wird nichthinzugefügt? und so ändert sich das proful dann bei allen usern weil eben kein where id=.... definiert ist
    könnt ihr mir vielleicht helfen ich habe schon alles mögliche versucht
    die variable $update enthält am ende immer nur dass hier:
    UPDATE user SET vorname = 'Philipp', nachname = 'lollus', geb = '28.Mai.1993', ort = 'Mössingen', land = 'Deutschland', icq = '221142166', msn = 'lippl1@msn.com', hp = 'http://www.lipplzone.de', hobbys = 'Handbball, Webdesign', skype = 'lipplus', email = 'lippl1@msn.com', about = '', geschlecht = 'Männlich', aktiv = '1', rechte = '9', steam = 'lippol'

    und hier der code:

  • PHP
    extract($_POST);


    Auweia, wo hast du den Blödsinn her?

    Du musst in dem Formular, in dem man die Daten ändern kann, die ID in einem hidden-Feld eintragen, dann hast du auch die ID. Alternativ ginge das auch mit einer Session.

  • Dann hilft wohl nur

    Richtig debuggen

    • Man bemerkt, dass ein Skript nicht das tut, was es soll.
    • Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL);
    • Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    • An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
    • Schritt 4 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    • Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    • Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    • Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

    Aus irgendeinem Grund kommt das Script nicht dazu, die Bedingung dranzuhängen.

  • Dein extract($_POST) ist tatsächlich sehr daneben. Erstens ist es zur Fehlersuche übersichtlicher, wenn du die Variablen einzeln zuweist, und zweitens auch eine echte Sicherheitslücke, da du ja nicht mal die eingegebenen Daten vernünftig prüfst.

    Ansonsten sehe ich, dass du die ID per GET übergibst und in $userid ablegst. Schon mal damit versucht? ;)

    Gruß,
    Jojo


  • Also dein Code ist sowas von unübersichtlich :D
    Schau mal ob es jetzt funzt...

    Der frühe Vogel fängt den Wurm,
    aber die zweite Maus bekommt den Käse.

    Einmal editiert, zuletzt von pApAnoAh (22. Januar 2009 um 13:20)

  • also 1. ich hab schon richtig debuggt weil ich das ding von dir bei jedem eintrag den ich mache hingeknallt bekomme!
    und 2. ich habe es auch schon über die get variable gehabt aber dann hat esnich gefuntzt dann habe ich es über post schicken alssen un dann hab ich ers gemerkt dass es ja daran lag dass das update nicht vollständog ist.
    ABER jetzt klappt ja alles
    VIELEN VIELEN DANK pApAnoAh
    aber warum erweitert er jetzt die variable nur weil du alles so noch speziell hingeschrieben hast oder wie?

  • pApAnoAh hat deinen Quellcode ordentlich formatiert und dabei bemerkt, dass die Zeile

    PHP
    $update .= " WHERE id = '".(int)$id."'";


    u.U. nicht ausgeführt wird. ;) Und da hätte man mit "Richtig debuggen" drauf kommen können.