prepare("SELECT *, (passwortcode_time IS NOT NULL AND passwortcode_time > DATE_SUB(NOW(), INTERVAL 24 HOUR)) AS code_noch_gueltig FROM intern_users WHERE id = :userid"); $result = $statement->execute(array('userid' => $userid)); $user = $statement->fetch(); //Überprüfe dass ein Nutzer gefunden wurde und dieser auch ein Authentifizierungscode angefordert hat // fetch() liefert false und nicht null, wenn kein Benutzer gefunden wird - // die alte Bedingung griff daher nie und lief mit false in den Array-Zugriff. if(!$user || $user['passwortcode'] === null) { error("Der Benutzer wurde nicht gefunden oder hat kein ein Authentifizierungscode angefordert."); $showForm = false; } // Ablauf in SQL pruefen: passwortcode_time wird mit NOW() gesetzt (Uhr des // DB-Servers), waehrend PHP auf dem Webserver in einer anderen Zeitzone // laeuft. strtotime()/time() lag hier um genau diese Differenz daneben. if(!$user['code_noch_gueltig']) { error("Dein Code ist leider abgelaufen. Bitte benutze die Authentifizierungsfunktion erneut."); $showForm = false; } //Überprüfe den Passwortcode if(sha1($code) != $user['passwortcode']) { error("Der übergebene Code war ungültig. Stell sicher, dass du den genauen Link in der URL aufgerufen hast. Solltest du mehrmals die Authentifizierungsfunktion genutzt haben, so ruf den Link in der neuesten E-Mail auf."); $showForm = false; } include("templates/header.inc.php"); ?>
Die Authentifizierung Ihre Kontos wurde erfolgreich abgeschlossen.
"; $showForm = false; } }else{ echo "Die Authentifizierungsfunktion steht mit den angegebenen Daten nicht zur Verfügung.
"; } if(isset($msg)) { echo $msg; } echo "