true, 'secure' => $isHttps, 'samesite' => 'Lax', ]); session_start(); header('X-Content-Type-Options: nosniff'); header('Referrer-Policy: strict-origin-when-cross-origin'); /* * Change this address if your support mailbox is different, or define the * LUNOVA_CONTACT_EMAIL environment variable in your hosting control panel. */ $recipientEmail = getenv('LUNOVA_CONTACT_EMAIL') ?: 'info@lunova.finance'; $senderEmail = 'no-reply@lunova.finance'; $errors = []; $successMessage = ''; $ticketReference = ''; $name = ''; $email = ''; $category = ''; $subject = ''; $message = ''; if (empty($_SESSION['contact_csrf'])) { $_SESSION['contact_csrf'] = bin2hex(random_bytes(32)); } if (($_SERVER['REQUEST_METHOD'] ?? 'GET') === 'POST') { $name = trim((string) ($_POST['name'] ?? '')); $email = trim((string) ($_POST['email'] ?? '')); $category = trim((string) ($_POST['category'] ?? 'General support')); $subject = trim((string) ($_POST['subject'] ?? '')); $message = trim((string) ($_POST['message'] ?? '')); $website = trim((string) ($_POST['website'] ?? '')); $csrfToken = (string) ($_POST['csrf_token'] ?? ''); if ($website !== '') { // Silently accept automated submissions caught by the honeypot. $successMessage = 'Your message has been received.'; } else { if (!hash_equals((string) $_SESSION['contact_csrf'], $csrfToken)) { $errors[] = 'Your session has expired. Please refresh the page and try again.'; } if ($name === '' || (function_exists('mb_strlen') ? mb_strlen($name) : strlen($name)) > 100) { $errors[] = 'Enter your full name.'; } $allowedCategories = ['General support','Account access','Payments & deposits','Withdrawals','Cards','Wallet & crypto','Verification','Security','Other']; if (!in_array($category, $allowedCategories, true)) { $errors[] = 'Select a valid request type.'; } if (!filter_var($email, FILTER_VALIDATE_EMAIL) || preg_match('/[\r\n]/', $email)) { $errors[] = 'Enter a valid email address.'; } $subjectLength = function_exists('mb_strlen') ? mb_strlen($subject) : strlen($subject); if ($subjectLength < 3 || $subjectLength > 150 || preg_match('/[\r\n]/', $subject)) { $errors[] = 'Enter a subject between 3 and 150 characters.'; } $messageLength = function_exists('mb_strlen') ? mb_strlen($message) : strlen($message); if ($messageLength < 10 || $messageLength > 5000) { $errors[] = 'Enter a message between 10 and 5,000 characters.'; } $lastSubmission = (int) ($_SESSION['last_contact_submission'] ?? 0); if ($lastSubmission > 0 && (time() - $lastSubmission) < 30) { $errors[] = 'Please wait a moment before sending another message.'; } if (!$errors) { try { $ticketReference = 'LNV-' . strtoupper(bin2hex(random_bytes(4))); } catch (Throwable $exception) { $ticketReference = 'LNV-' . strtoupper(substr(hash('sha256', uniqid('', true)), 0, 8)); } $safeSubject = preg_replace('/\s+/', ' ', $subject) ?: 'Customer enquiry'; $mailSubject = '[Lunova Support] ' . $safeSubject . ' (' . $ticketReference . ')'; if (function_exists('mb_encode_mimeheader')) { $mailSubject = mb_encode_mimeheader($mailSubject, 'UTF-8'); } $normalisedMessage = str_replace(["\r\n", "\r"], "\n", $message); $mailBody = implode("\r\n", [ 'New Lunova support request', '----------------------------------------', 'Reference: ' . $ticketReference, 'Received: ' . gmdate('Y-m-d H:i:s') . ' UTC', 'Customer name: ' . $name, 'Customer email: ' . $email, 'Request type: ' . $category, 'Subject: ' . $safeSubject, '', 'Message:', $normalisedMessage, '', '----------------------------------------', 'Submitted from the authenticated Lunova contact page.', ]); $headers = implode("\r\n", [ 'From: Lunova Website <' . $senderEmail . '>', 'Reply-To: ' . $email, 'MIME-Version: 1.0', 'Content-Type: text/plain; charset=UTF-8', 'Content-Transfer-Encoding: 8bit', 'X-Mailer: PHP/' . PHP_VERSION, ]); if (mail($recipientEmail, $mailSubject, $mailBody, $headers)) { $_SESSION['last_contact_submission'] = time(); $_SESSION['contact_csrf'] = bin2hex(random_bytes(32)); $successMessage = 'Your message has been sent successfully.'; $name = ''; $email = ''; $category = ''; $subject = ''; $message = ''; } else { $ticketReference = ''; $errors[] = 'We could not send your message at this time. Please try again shortly.'; error_log('Lunova contact form: mail() failed for recipient ' . $recipientEmail); } } } } function formValue(string $value): string { return htmlspecialchars($value, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); } ?>
Send your request directly to our support team. Provide as much relevant information as possible so we can understand your enquiry and reply to the email address you provide.
Complete the form below and our team will receive your message.
Lunova Support will never ask you to disclose your password, wallet recovery phrase, private key or one-time authentication code.