PnPaaS
Konto aktivieren
Bestätigen Sie die Aktivierung Ihres PnPaaS-Kontos.
prepare( 'SELECT t.id, t.user_id FROM account_activation_tokens t JOIN users u ON u.id = t.user_id WHERE t.token_hash = :token_hash AND t.used_at IS NULL AND t.expires_at > NOW() AND u.status = "pending" LIMIT 1' ); $check->execute(['token_hash' => hash('sha256', $token)]); $validToken = is_array($check->fetch()); if (!$validToken) $error = 'Dieser Aktivierungslink ist ungültig oder abgelaufen.'; } catch (Throwable $exception) { error_log('PnPaaS activation validation error: ' . $exception->getMessage()); $error = 'Der Aktivierungslink ist derzeit nicht verfügbar.'; } } if ($_SERVER['REQUEST_METHOD'] === 'POST' && $error === null) { if (!pnpaas_valid_csrf((string)($_POST['csrf_token'] ?? ''))) { $error = 'Die Sitzung ist abgelaufen. Bitte öffnen Sie den Aktivierungslink erneut.'; } else { try { $db = pnpaas_db(); $db->beginTransaction(); $find = $db->prepare( 'SELECT t.id, t.user_id FROM account_activation_tokens t JOIN users u ON u.id = t.user_id WHERE t.token_hash = :token_hash AND t.used_at IS NULL AND t.expires_at > NOW() AND u.status = "pending" LIMIT 1 FOR UPDATE' ); $find->execute(['token_hash' => hash('sha256', $token)]); $activation = $find->fetch(); if (!is_array($activation)) { $db->rollBack(); $validToken = false; $error = 'Dieser Aktivierungslink ist ungültig oder abgelaufen.'; } else { $updateUser = $db->prepare('UPDATE users SET status = "active" WHERE id = :user_id AND status = "pending"'); $updateUser->execute(['user_id' => (int)$activation['user_id']]); $used = $db->prepare('UPDATE account_activation_tokens SET used_at = NOW() WHERE id = :id'); $used->execute(['id' => (int)$activation['id']]); $db->commit(); $validToken = false; $success = 'Ihr Konto wurde aktiviert. Sie können sich jetzt anmelden.'; } } catch (Throwable $exception) { if (isset($db) && $db->inTransaction()) $db->rollBack(); error_log('PnPaaS account activation error: ' . $exception->getMessage()); $error = 'Das Konto konnte nicht aktiviert werden. Bitte versuchen Sie es erneut.'; } } } ?>
PnPaaS
Bestätigen Sie die Aktivierung Ihres PnPaaS-Kontos.