Registrierung

'; $error = true; } if(!filter_var($email, FILTER_VALIDATE_EMAIL)) { echo 'Bitte eine gültige E-Mail-Adresse eingeben
'; $error = true; } if(strlen($passwort) == 0) { echo 'Bitte ein Passwort angeben
'; $error = true; } if($passwort != $passwort2) { echo 'Die Passwörter müssen übereinstimmen
'; $error = true; } //Überprüfe, dass die E-Mail-Adresse noch nicht registriert wurde if(!$error) { $statement = $pdo->prepare("SELECT * FROM intern_users WHERE email = :email"); $result = $statement->execute(array('email' => $email)); $user = $statement->fetch(); if($user !== false) { echo 'Diese E-Mail-Adresse ist bereits vergeben
'; $error = true; } } //Keine Fehler, wir können den Nutzer registrieren if (!$error) { $pdo->beginTransaction(); try { // Passwort hashen $passwort_hash = password_hash($passwort, PASSWORD_DEFAULT); // intern_users $stmt = $pdo->prepare(" INSERT INTO intern_users (kassenart, plz, strasse, ort, geburtstag, tele, email, passwort, vorname, nachname) VALUES (:kassenart, :plz, :strasse, :ort, :geburtstag, :tele, :email, :passwort, :vorname, :nachname) "); $stmt->execute([ ':kassenart' => $kassenart, ':plz' => $plz, ':strasse' => $strasse, ':ort' => $ort, ':geburtstag' => $geburtstag, ':tele' => $tele, ':email' => $email, ':passwort' => $passwort_hash, ':vorname' => $vorname, ':nachname' => $nachname ]); // user-Tabelle: Insert oder Update über UNIQUE(mail) $stmt = $pdo->prepare(" INSERT INTO persons (vorname, nachname, geburtstag, email, tele, ort, plz, strasse) VALUES (:vorname, :nachname, :geburtstag, :email, :tele, :ort, :plz, :strasse) ON DUPLICATE KEY UPDATE vorname = VALUES(vorname), nachname = VALUES(nachname), geburtstag = VALUES(geburtstag), tele = VALUES(tele), ort = VALUES(ort), plz = VALUES(plz), strasse = VALUES(strasse) "); $stmt->execute([ ':vorname' => $vorname, ':nachname' => $nachname, ':geburtstag' => $geburtstag, ':email' => $email, ':tele' => $tele, ':ort' => $ort, ':plz' => $plz, ':strasse' => $strasse ]); // User-ID holen $stmt = $pdo->prepare("SELECT person_id FROM persons WHERE email = :mail"); $stmt->execute([':mail' => $email]); $userid = $stmt->fetchColumn(); $pdo->commit(); echo 'Du wurdest erfolgreich registriert. Zum Login
'; $showFormular = false; // Bisher wurde hier keine Mail verschickt: mailreg blieb 0 und jeder // neue Benutzer landete nach dem Login auf der Aufforderung, die // Authentifizierung selbst anzustossen. Den Link gibt es jetzt sofort. $stmt = $pdo->prepare("SELECT id, vorname, email FROM intern_users WHERE email = :email LIMIT 1"); $stmt->execute([':email' => $email]); $neuerUser = $stmt->fetch(PDO::FETCH_ASSOC); if ($neuerUser && sendeAuthentifizierungsMail($pdo, $neuerUser, $organisationsname)) { echo 'Wir haben Ihnen eine E-Mail geschickt. Bitte bestätigen Sie darin ' . 'Ihre Adresse, damit Sie das Konto vollständig nutzen können.
'; } else { echo 'Die Bestätigungs-E-Mail konnte gerade nicht versendet werden. ' . 'Sie können sie nach dem Login jederzeit erneut anfordern.
'; } } catch (Exception $e) { // Der Mailversand laeuft nach dem commit(). Ohne diese Pruefung // wuerde ein Fehler dort in rollBack() ohne offene Transaktion // laufen und die Seite mit einem Fatal Error abbrechen. if ($pdo->inTransaction()) { $pdo->rollBack(); } // Interne Fehlermeldungen gehoeren ins Log, nicht auf die Seite. error_log('register.php: Registrierung fehlgeschlagen: ' . $e->getMessage()); echo 'Bei der Registrierung ist ein Fehler aufgetreten. ' . 'Bitte versuchen Sie es später noch einmal oder rufen Sie uns an.
'; } } } if($showFormular) { ?>