Direkt zum Seiteninhalt

Verlosung - IT-SERVICE 68 - Emmelshausen

IT-SERVICE 68
Menü überspringen
IT-SERVICE 68
Menü überspringen
 06747 - 597 8800
PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC ]); } catch (PDOException $e) { // Im Live-Betrieb Fehlermeldung anonymisieren: die("Verbindung fehlgeschlagen."); $db_error = "Datenbankfehler: " . $e->getMessage(); } $message = ""; $message_type = ""; // "success" oder "error" // 2. FORMULAR-VERARBEITUNG if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['submit_lottery'])) { // Bot-Schutz (Honeypot) abfragen if (!empty($_POST['website_hp'])) { die("Spam-Bot erkannt."); } $email = filter_var($_POST['email'] ?? '', FILTER_VALIDATE_EMAIL); $firstname = htmlspecialchars(trim($_POST['firstname'] ?? ''), ENT_QUOTES, 'UTF-8'); $lastname = htmlspecialchars(trim($_POST['lastname'] ?? ''), ENT_QUOTES, 'UTF-8'); $terms = isset($_POST['terms_accepted']); $newsletter = isset($_POST['newsletter_accepted']) ? 1 : 0; if (!$email || !$terms || empty($firstname) || empty($lastname)) { $message = "Bitte füllen Sie alle Pflichtfelder aus und akzeptieren Sie die Bedingungen."; $message_type = "error"; } else { try { // Token und IP generieren $token = bin2hex(random_bytes(32)); $ip = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0'; // In die Datenbank schreiben (Tabelle muss vorher via phpMyAdmin angelegt werden) $stmt = $pdo->prepare("INSERT INTO website_lottery_participants (email, firstname, lastname, registration_ip, doi_token, newsletter_consented) VALUES (:email, :firstname, :lastname, :ip, :token, :nl) ON DUPLICATE KEY UPDATE doi_token = :token, is_confirmed = 0"); $stmt->execute([ ':email' => $email, ':firstname' => $firstname, ':lastname' => $lastname, ':ip' => $ip, ':token' => $token, ':nl' => $newsletter ]); // DOI-E-Mail senden (Hinweis: Nutzen Sie langfristig SMTP für bessere Zustellrate) $aktuelle_url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; // Falls Parameter in der URL sind, diese abschneiden für den sauberen Link $basis_url = strtok($aktuelle_url, '?'); $bestaetigungs_link = $basis_url . "?action=verify&token=" . $token; $betreff = "Bestätigung Ihrer Gewinnspiel-Teilnahme"; $text = "Hallo " . $firstname . ",\n\nvielen Dank für Ihre Anmeldung!\n\n"; $text .= "Bitte klicken Sie auf den folgenden Link, um Ihre Teilnahme und ggf. den Newsletter rechtssicher zu bestätigen:\n"; $text .= $bestaetigungs_link . "\n\n"; $text .= "Erst nach diesem Klick landen Sie im Lostopf.\n\nMit freundlichen Grüßen,\nIhr Team"; $header = "From: info@" . $_SERVER['HTTP_HOST'] . "\r\n" . "Reply-To: info@" . $_SERVER['HTTP_HOST'] . "\r\n" . "X-Mailer: PHP/" . phpversion(); if(mail($email, $betreff, $text, $header)) { $message = "Fast geschafft! Wir haben Ihnen eine Bestätigungs-E-Mail geschickt. Bitte prüfen Sie Ihr Postfach (und den Spam-Ordner)."; $message_type = "success"; } else { $message = "Das System konnte keine E-Mail senden. Bitte wenden Sie sich an den Support."; $message_type = "error"; } } catch (PDOException $e) { $message = "Ein Fehler ist aufgetreten. Eventuell nehmen Sie bereits teil."; $message_type = "error"; } } } // 3. DOUBLE-OPT-IN VERIFIKATION (Wenn Link geklickt wurde) if (isset($_GET['action']) && $_GET['action'] === 'verify' && !empty($_GET['token'])) { $v_token = $_GET['token']; try { $stmt = $pdo->prepare("SELECT id, firstname FROM website_lottery_participants WHERE doi_token = :token AND is_confirmed = 0"); $stmt->execute([':token' => $v_token]); $participant = $stmt->fetch(); if ($participant) { $update = $pdo->prepare("UPDATE website_lottery_participants SET is_confirmed = 1, confirmation_time = CURRENT_TIMESTAMP, confirmation_ip = :ip WHERE id = :id"); $update->execute([ ':ip' => $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0', ':id' => $participant['id'] ]); $message = "Vielen Dank, " . $participant['firstname'] . "! Ihre Teilnahme wurde erfolgreich bestätigt. Viel Glück!"; $message_type = "success"; } else { $message = "Dieser Bestätigungslink ist ungültig oder wurde bereits verwendet."; $message_type = "error"; } } catch (PDOException $e) { $message = "Fehler bei der Verifikation."; $message_type = "error"; } } ?>

Jetzt am Gewinnspiel teilnehmen!

Füllen Sie das Formular aus, um sich Ihre Gewinnchance zu sichern.

" method="POST">
Zurück zum Seiteninhalt
App-Icon
IT-SERVICE 68 - Emmelshausen Installieren Sie diese Website auf Ihrem Startbildschirm für ein besseres Erlebnis
Tippen Sie auf Installationsschaltfläche auf iOS und dann auf „Zu Ihrem Bildschirm hinzufügen“