Update problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Update problem

    Hallo!
    Ich arbeite gerade an einem Passwort-Reaktivatvions-Script. Ich habe eine mysql Tabelle users. Diese Tabelle beinhaltet folgende Spalten
    id,username,pw,userlevel,timout,e_mail,active_flag,pw_reactivate

    Wenn zu viele fehlerhafte Anmeldung innerhalb einer bestimmten Zeit auftreten, dann wird der User gesperrt. (active_flag wird auf 'N' gesetzt und das Password wird in pw_reactivate geschrieben) Ihm wird ein E-Mail mit seier User ID, seinem usernamen und sein pw_reactivate Passwort zugesandt. Er kann dann eine Seite aufrufen um seinen Account zu aktivieren. Dort muss er diese Daten eintragen.
    Wie kann ich jetzt die eingetragenen Daten mit denen aus Mysql vergleichen, und den Account bei richtiger Eingabe der Daten wieder freischalten?

    Ich habe dabei an eine IF Anweisung gedacht ca. so:
    IF (id=2 AND username='mod1' AND active_flag='N' AND pw_reactivate=PASSWORD('testasdf'), UPDATE users
    SET active_flag='Y',
    pw_reactivate=NULL)

    Allerdings habe ich hier bei der SET Anweisung einen Beistrich wodurch die IF Anweisung nicht mehr funktioniert.

  • #2
    ich verstehe die frage nicht: wenn der user nach dem erhalt einer solchen email auf deine seite geht, muss er doch ein formular ausfüllen, in dem er die daten einträgt, oder? dann schickst du eine SELECT-anfrage an die datenbank mit den eingegebenen daten - wurde eine zeile markiert, so war die eingabe korrekt, führe nun dein UPDATE statement aus. wurden 0 zeilen markiert, war die eingabe nicht korrekt.

    Kommentar


    • #3
      Genau dies möchte ich damit bezwecken, allerdings in einer SQL Abfrage. So dass Mysql die Daten automatisch updated wenn das Resultat 1 Zeile Zeile ist, also wenn die Eingaben korrekt sind. Geht das überhaupt? Ich müsste ja einen SELECT Befehl und eine UPDATE Befehl in einer Anweisung unterbringen.

      Kommentar


      • #4
        ich denke nicht, dass du if so einsetzen kannst - es erwartet 3 ausdrücke und liefert einen vierten zurück. du aber übergibst eine menge undefinierter variablen im ersten, einen operator im zweiten und wieder eine variable im dritten argument.

        ich fürchte, du kommst um 2 queries nicht drum herum.

        Kommentar


        • #5
          Du kannst alle Bedingungen in den WHERE-Teil des UPDATE schreiben. Theoretisch kannst Du danach mysql_affected_rows() abfragen und dem user ausgeben, ob er wieder freigeschaltet ist.

          Zudem braucht es im WHERE-Teil eine Bedingung auf die user-id, was bei dir fehlt. Sonst macht es einen update auf alle Zeilen der Tabelle.

          Es war alles schon da, man muss es nur etwas anders anordnen:
          Code:
          UPDATE users
          SET active_flag='Y',
          pw_reactivate=NULL
          WHERE id=2 AND username='mod1' AND active_flag='N' AND
           pw_reactivate=PASSWORD('testasdf')
          Zuletzt geändert von h31ss; 26.07.2006, 19:12.

          Kommentar

          Lädt...
          X