File: /home/kiwerkzeuge.de/public_html/aktivieren.php
<?php
declare(strict_types=1);
/**
* Ein-Klick-Freischaltung nach dem Kauf.
* Der Link aus der Bestell-E-Mail trägt ?code=KIWZ-…; hier wird er gegen die
* Entitlement-DB geprüft und – bei Gültigkeit – als Cookie kiwz_prio gesetzt.
* Die eigentliche Tarif-Prüfung passiert weiterhin server-seitig bei jedem
* Aufruf (kiwz_tier_for_code), d.h. eine Kündigung entzieht den Zugang sofort,
* unabhängig von der Cookie-Laufzeit.
*/
require_once __DIR__ . '/service/kiwz-tier.php';
$rawCode = (string)($_GET['code'] ?? ($_POST['code'] ?? ''));
$code = strtoupper(trim($rawCode));
$tier = $code !== '' ? kiwz_tier_for_code($code) : null;
$valid = $tier !== null;
if ($valid) {
// Konsistent zum Frontend (assets/site.js), aber langlebig – der Zugang
// wird ohnehin bei jedem Request frisch gegen die DB geprüft.
setcookie('kiwz_prio', $code, [
'expires' => time() + 400 * 86400,
'path' => '/',
'secure' => true,
'httponly' => false,
'samesite' => 'Lax',
]);
}
$tierLabel = [
'starter' => 'KI Starter',
'pro' => 'KI Pro',
'business' => 'KI Business',
][$tier] ?? '';
http_response_code($valid ? 200 : 400);
header('Content-Type: text/html; charset=UTF-8');
header('Cache-Control: no-store');
header('Referrer-Policy: no-referrer');
?><!doctype html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex,nofollow">
<title><?= $valid ? 'Zugang freigeschaltet' : 'Code ungültig' ?> · kiwerkzeuge.de</title>
<link rel="stylesheet" href="/assets/fonts/inter.css">
<style>
:root{
--bg:#070814; --bg2:#0c1827; --surface:#142134; --border:#26364a;
--text:#f4f7fb; --muted:#a9b6c9; --violet:#8b67f7; --mint:#69d58a;
--font:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
}
*{box-sizing:border-box}
body{margin:0;min-height:100vh;display:grid;place-items:center;padding:24px;
font-family:var(--font);color:var(--text);
background:radial-gradient(1000px 500px at 20% -10%,#101a33 0%,var(--bg) 55%) fixed,var(--bg);}
.card{width:100%;max-width:520px;background:var(--bg2);border:1px solid var(--border);
border-radius:16px;padding:40px 34px;box-shadow:0 24px 60px rgba(3,6,15,.5);text-align:center}
.mark{width:56px;height:56px;margin:0 auto 20px;border-radius:14px;display:grid;place-items:center;
font-weight:850;color:#07111f;background:linear-gradient(135deg,var(--violet),var(--mint));
box-shadow:inset 0 1px 0 rgb(255 255 255/.3)}
h1{font-size:1.5rem;margin:0 0 10px;letter-spacing:-.02em}
p{color:var(--muted);line-height:1.6;margin:0 0 14px}
.badge{display:inline-block;margin:6px 0 18px;padding:7px 16px;border-radius:999px;font-weight:750;
color:#07111f;background:linear-gradient(135deg,var(--violet),var(--mint))}
.btn{display:inline-block;margin-top:12px;padding:14px 26px;border-radius:12px;font-weight:750;
text-decoration:none;color:#07111f;background:linear-gradient(135deg,var(--violet),var(--mint));
box-shadow:0 10px 26px rgba(139,103,247,.35)}
.btn.secondary{background:transparent;border:1px solid var(--border);color:var(--text);box-shadow:none;margin-left:8px}
.muted-small{font-size:.85rem;color:var(--muted);margin-top:22px}
code{background:#050b16;border:1px solid var(--border);border-radius:8px;padding:3px 8px;color:var(--mint)}
</style>
</head>
<body>
<main class="card">
<div class="mark" aria-hidden="true">KI</div>
<?php if ($valid): ?>
<h1>Zugang ist freigeschaltet 🎉</h1>
<div class="badge"><?= htmlspecialchars($tierLabel, ENT_QUOTES) ?> aktiv</div>
<p>Dein <?= htmlspecialchars($tierLabel, ENT_QUOTES) ?>-Paket ist ab sofort in allen KI-Werkzeugen freigeschaltet – auf diesem Gerät musst du nichts weiter tun.</p>
<p><a class="btn" href="/ki-tools.html">Zu den Werkzeugen →</a>
<a class="btn secondary" href="/">Startseite</a></p>
<p class="muted-small">Auf einem anderen Gerät oder Browser? Öffne diesen Link dort erneut, oder gib den Code <code><?= htmlspecialchars($code, ENT_QUOTES) ?></code> in den Werkzeugen ein.</p>
<?php else: ?>
<h1>Code konnte nicht bestätigt werden</h1>
<p>Der Freischalt-Link ist ungültig oder das Paket wurde beendet. Bitte prüfe den Link aus deiner Bestell-E-Mail.</p>
<p><a class="btn" href="/preise.html">Zu den Paketen</a>
<a class="btn secondary" href="mailto:support@panomity.com">Support</a></p>
<p class="muted-small">Frisch gekauft? Die Freischaltung kann einen Moment dauern – lade den Link aus der E-Mail dann noch einmal.</p>
<?php endif; ?>
</main>
</body>
</html>
<?php
// Zugriffe protokollieren (ohne den vollständigen Code) für Support/Monitoring.
@error_log(sprintf('[kiwz-aktivieren] valid=%s tier=%s ip=%s',
$valid ? '1' : '0', (string)$tier, (string)($_SERVER['REMOTE_ADDR'] ?? '')));