3b08be899c90cd0bac70922169f039b9116a47c0
Die Pruefung war auskommentiert, Reset-Links galten damit unbegrenzt, obwohl die E-Mail "innerhalb der naechsten 24 Stunden" verspricht. Sie wird jetzt in SQL ausgewertet statt mit strtotime()/time(): passwortcode_time wird in passwortvergessen.php mit NOW() gesetzt, also mit der Uhr des DB-Servers (Europe/Berlin), waehrend der Webserver in UTC laeuft. Eine Pruefung in PHP waere um diese zwei Stunden falsch - dieselbe Ursache, die schon die 2FA-Codes unbrauchbar gemacht hat. So benutzen Setzen und Pruefen dieselbe Uhr. Ausserdem: fetch() liefert false und nicht null, wenn kein Benutzer gefunden wird. Die Bedingung $user === null hat deshalb nie gegriffen, und der Code lief mit false weiter in den Array-Zugriff. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
praxis-creutzburg-web
Languages
PHP
79.3%
JavaScript
17.5%
HTML
1.6%
CSS
0.9%
SCSS
0.6%