Mit timestamp rumrechnen (VON PHP: Passwort vergessen)

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Mit timestamp rumrechnen (VON PHP: Passwort vergessen)

    hi im Bezug auf meinen Thread im Php Forum (passwort vergessen funktion) habe ich eine kleine Frage zu einer mysql abfrage.

    Es geht um eine Passwort vergessen funktion. Der user gibt seine email ein und in der db wird zum dazugehörigen eintrag ein md5hash plus timestamp gespeichert.
    Ich schicke dem User dann eine mail, in der der hash angehängt wird. klickt der user auf diese mail wird der hash ausgelesen und eine abfrage soll die zugehörige usernummer liefern.

    Nun kommt der "Haken". Der hash darf nur 1 std gültig sein, darum speicher ich zeitgleich noch einen Timestamp mit.

    So der user klickt nun auf den link und es soll die zugehörige usernummer abgefragt werden. Aber eben nur, wenn der timestamp in seiner spalte nich älter als 1 std ist.

    Also meine Abfrage habe ich so gestaltet:

    Quellcode

    1. SELECT
    2. usernummer
    3. FROM
    4. Kunden
    5. WHERE
    6. confirmcode = 'd10815cbb2e3dblablabla'
    7. AND
    8. time + 3600 >= NOW()
    9. ;


    in der Spalte "time" wird eben der timestamp gespeichert.
    Die/Der Query gibt mir ein Ergebnis zurück, aber ob das das richtige ist bin ich mir nicht ganz sicher...
    Also kann ich, wie ichs eben gemacht hab, auf nen Timestamp einfach ne Zeit in Sekunden draufrechnen ?

    oder muss ich bei der überprüfung ob der timestamp älter als ne std ist anders vorgehen?

    danke schonmal im vorraus

    grüße
    Timo
    ----[Blockierte Grafik: http://www.smilie-harvester.de/smilies/Alltag/putzen.gif] Nein ich bin nicht die Signatur, ich Putz hier nur ---
  • Lass den Befehl doch mal auf deine DB los und schau was passiert... Meines erachtens sieht das garnicht mal so falsch aus. dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

    Du musst definitiv die eine Stunde drauf rechnen. Sonst kannst du ja schlecht vergleich... du kannst es aber auch anders machen, wenn du den Timestamp in die DB schreibst, rechne gleich eine h drauf. dann musst du das im Query nicht mehr machen.
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert, der letzte Netzknoten kommerzialisiert, die letzte Newsgroup moderiert wird, werdet Ihr merken, dass man mit Geld allein nicht programmieren kann.
  • Probier einfach mal:

    Quellcode

    1. SELECT DATE_FORMAT(`time` + 3600,'%d.%m.%Y %H:%i:%s') as ergebnis FROM Kunden WHERE confirmcode = 'd10815cbb2e3dblablabla'


    Dann weisst du ob es richtig ist ;)

    Achja und quote dein time in `time`. Obwohl es ein reserviertes Schlüsselwort ist, verlangt mysql es nicht, aber du solltest es trotzdem machen.
    Damit kannst du später evtl. Probleme vermeiden.