'confirmed'). * GET confirm.php?token=... -> pagina di conferma (non modifica nulla) * POST (token + confirm=1) -> conferma il posto e invia l'email di conferma. */ $pdo = pdo_conn(); $token = trim($_POST['token'] ?? $_GET['token'] ?? ''); $isPost = ($_SERVER['REQUEST_METHOD'] ?? 'GET') === 'POST'; $booking = null; if ($token !== '') { $q = $pdo->prepare("SELECT b.*, e.title AS ev_title, e.starts_at AS ev_starts, e.id AS eid FROM event_bookings b JOIN events e ON e.id = b.event_id WHERE b.token = ?"); $q->execute([$token]); $booking = $q->fetch(PDO::FETCH_ASSOC); } $state = 'form'; // form | notfound | already | invalid | toolate | done | error if (!$booking) { $state = 'notfound'; } elseif ($booking['status'] === 'confirmed') { $state = 'already'; } elseif ($booking['status'] !== 'offered') { // waiting / cancelled / ecc.: non c'è un'offerta da confermare $state = 'invalid'; } elseif (strtotime($booking['ev_starts']) <= time()) { $state = 'toolate'; } elseif ($isPost && !empty($_POST['confirm'])) { try { $upd = $pdo->prepare("UPDATE event_bookings SET status = 'confirmed', updated_at = NOW() WHERE id = ? AND status = 'offered'"); $upd->execute([(int) $booking['id']]); if ($upd->rowCount() > 0) { $state = 'done'; // Email di conferma definitiva (best-effort) try { $ev = $pdo->prepare("SELECT * FROM events WHERE id = ?"); $ev->execute([(int) $booking['eid']]); $evRow = $ev->fetch(PDO::FETCH_ASSOC); if ($evRow) { $booking['status'] = 'confirmed'; yse_mail_booking($booking, $evRow); } } catch (Throwable $me) { error_log('[confirm mail] ' . $me->getMessage()); } } else { $state = 'invalid'; } } catch (Throwable $ex) { error_log('[apiwp/confirm] ' . $ex->getMessage()); $state = 'error'; } } function e($v): string { return htmlspecialchars((string) $v, ENT_QUOTES, 'UTF-8'); } ?>
Questo link non è valido o è scaduto.
Il tuo posto per è già confermato. Ci vediamo lì!
Questa offerta non è più valida. Se pensi ci sia un errore, contattaci.
Non è più possibile confermare online. Contattaci per assistenza.
Riprova tra poco. Se il problema persiste, contattaci.
Grazie , il tuo posto per è confermato. Ti abbiamo inviato l'email con tutti i dettagli.
Confermi la tua presenza, ?
Se non puoi partecipare, ignora pure questa email: il posto passerà a un'altra persona.