Files
ptp/forms/send_plan.php
T
Kirik 776dbb5e76 Fix forms: return JSON instead of redirect for AJAX compatibility
- send_plan.php: replace redirect with JSON response
- send_ask.php: replace redirect with JSON response
- Fixes white page issue (fetch API doesn't follow redirects)
- Update .gitignore: allow forms folder but protect .env file
2025-10-27 15:35:46 +01:00

119 lines
5.5 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
require_once 'forms_helper.php';
// Загружаем настройки из .env
load_env_file(__DIR__ . '/.env');
$settings = get_forms_settings();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$name = trim($_POST['name'] ?? '');
$email = trim($_POST['email'] ?? '');
$phone = trim($_POST['phone'] ?? '');
$telegram = trim($_POST['telegram'] ?? '');
$bvs_number = trim($_POST['bvs_number'] ?? '');
$trip_period = trim($_POST['trip_period'] ?? '');
$consent = isset($_POST['privacy_consent']) ? 'agree' : '';
// Валидация
if (empty($name) || empty($consent)) {
$error = "Обязательные поля: Имя, Согласие на обработку данных.";
} elseif (empty($email) && empty($telegram)) {
$error = "Укажите email или Telegram ник (одно из двух обязательно).";
} elseif (!empty($email) && !filter_var($email, FILTER_VALIDATE_EMAIL)) {
$error = "Некорректный email адрес.";
} elseif ($consent !== 'agree') {
$error = "Для отправки заявки необходимо согласие на обработку персональных данных.";
} else {
// Подготавливаем данные заявки
$form_data = [
'name' => $name,
'email' => $email,
'phone' => $phone,
'telegram' => $telegram,
'bvs_number' => $bvs_number,
'trip_period' => $trip_period,
'consent' => $consent
];
$success_messages = [];
$error_messages = [];
// 1. Отправка email (если включено)
if ($settings['send_email']) {
$to = "test@yourdomain.com"; // ЗАМЕНИТЕ на ваш тестовый email!
$email_subject = "Новая заявка на поездку от " . $name;
$email_body = "Новая заявка на планирование поездки:\n\n";
$email_body .= "Имя: " . $name . "\n";
$email_body .= "Email: " . $email . "\n";
$email_body .= "Телефон: " . ($phone ?: 'не указан') . "\n";
$email_body .= "Telegram: " . ($telegram ?: 'не указан') . "\n";
$email_body .= "Учётный номер БВС/Вариант поездки: " . ($bvs_number ?: 'не указано') . "\n";
$email_body .= "Период поездки: " . ($trip_period ?: 'не выбран') . "\n";
$email_body .= "Согласие на обработку данных: Да\n\n";
$email_body .= "---\n";
$email_body .= "Отправлено с: " . $_SERVER['HTTP_HOST'] . "\n";
$email_body .= "Дата: " . date('Y-m-d H:i:s') . "\n";
$email_body .= "IP: " . $_SERVER['REMOTE_ADDR'] . "\n";
$headers = "From: noreply@sleeptrip.ru\r\n";
$headers .= "Reply-To: " . $email . "\r\n";
$headers .= "X-Mailer: PHP/" . phpversion();
$headers .= "Content-Type: text/plain; charset=UTF-8\r\n";
if (mail($to, $email_subject, $email_body, $headers)) {
$success_messages[] = "Email отправлен";
} else {
$error_messages[] = "Ошибка отправки email";
}
}
// 2. Сохранение в JSON (если включено)
if ($settings['save_json']) {
$json_saved = save_application_to_json($form_data, 'plan');
if ($json_saved) {
$success_messages[] = "Заявка сохранена";
} else {
$error_messages[] = "Ошибка сохранения заявки";
}
}
// 3. Уведомление в Telegram (если включено)
if ($settings['send_telegram'] && $settings['notifications']) {
$telegram_sent = send_telegram_notification($form_data, 'plan');
if ($telegram_sent) {
$success_messages[] = "Уведомление отправлено";
} else {
$error_messages[] = "Ошибка уведомления в Telegram";
}
}
// Формируем итоговое сообщение
if (!empty($success_messages)) {
$success = "Заявка обработана! Мы свяжемся с вами в ближайшее время.";
// Очистить форму
$name = $email = $phone = $telegram = $bvs_number = $trip_period = $consent = '';
}
if (!empty($error_messages) && empty($success_messages)) {
$error = "Ошибка обработки заявки. Попробуйте еще раз или свяжитесь через Telegram.";
}
}
}
// Возвращаем JSON для AJAX совместимости
if (isset($success)) {
header('Content-Type: application/json; charset=utf-8');
echo json_encode([
'success' => true,
'message' => $success
], JSON_UNESCAPED_UNICODE);
exit;
} elseif (isset($error)) {
header('Content-Type: application/json; charset=utf-8');
echo json_encode([
'success' => false,
'error' => $error
], JSON_UNESCAPED_UNICODE);
exit;
}
?>