HEX
Server: LiteSpeed
System: Linux houston.panomity.com 6.8.0-100-generic #100-Ubuntu SMP PREEMPT_DYNAMIC Tue Jan 13 16:40:06 UTC 2026 x86_64
User: nudepix (1011)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
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'] ?? '')));