Как изменить action формы Tilda на свой скрипт
При копировании сайта с Tilda на свой хостинг часто возникает проблема: обычные формы отправляются на ваш скрипт, а формы с номером телефона продолжают уходить на forms.tildacdn.com/procces. Это происходит из-за того, что Tilda использует динамическую подгрузку JavaScript для обработки полей с маской телефона. В этой статье разберём, как найти и изменить action формы, чтобы данные уходили на ваш sendform.php.
Почему форма перенаправляется на Tilda?
В исходном коде вы видите action="https://forms.tildacdn.com/procces/". Tilda защищает свои формы от редактирования через HTML: после загрузки страницы JavaScript перезаписывает атрибут action. Если вы меняете его в браузере - всё работает, но в исходниках правки не сохраняются. Нужно редактировать скрипты, которые инициализируют форму.
Как найти и изменить action в коде Tilda
Шаг 1. Найдите форму в HTML
Ищите тег <form> с классом js-form-proccess. В вашем примере это форма с id form716499713 и action https://forms.tildacdn.com/procces/. Скопируйте весь блок формы.
Шаг 2. Проверьте скрипты-обработчики
Tilda подключает внешние JS-файлы, которые перехватывают отправку. Ищите в коде страницы строки вроде:
<script src="https://static.tildacdn.com/js/tilda-forms-1.0.min.js"></script><script src="https://static.tildacdn.com/js/tilda-phone-mask-1.1.min.js"></script>
Если эти скрипты не удалить, они продолжат подменять action на адрес Tilda.
Шаг 3. Замените action и отключите JS-обработку
В вашем HTML замените action на свой скрипт:
<form action="sendform.php" method="POST" ...>Затем удалите или закомментируйте все внешние скрипты Tilda, кроме тех, что отвечают за маску телефона (если она нужна). Вместо них подключите свою логику отправки. Например, для маски телефона можно использовать библиотеку intl-tel-input.
Как перенаправить форму с телефоном на свой PHP-скрипт
Если после замены action форма всё равно уходит на Tilda, значит, работает JavaScript-обработчик. Полностью отключите его, заменив на простую отправку через PHP. Вот пример кода для sendform.php:
<?php
$phone = $_POST['phone'] ?? '';
$name = $_POST['Name'] ?? '';
$message = "Имя: $name\nТелефон: $phone";
mail('your@email.com', 'Новая заявка', $message);
// или отправка в Telegram через API
?>Убедитесь, что в форме указан method="POST" и name полей совпадают с ключами в PHP.
Частые ошибки и их решение
Ошибка 1: После правки action форма не отправляется. Проверьте, что файл sendform.php лежит в той же папке, что и HTML, или укажите полный путь.
Ошибка 2: Данные приходят пустыми. Убедитесь, что в input для телефона есть атрибут name (например, name="phone"), и он совпадает с именем переменной в PHP.
Ошибка 3: Маска телефона ломается. Если вы удалили скрипты Tilda, маска перестанет работать. Используйте альтернативу: <input type="tel" ...> с атрибутом pattern или подключите jQuery Mask Plugin.
Заключение
Чтобы изменить action формы Tilda на свой скрипт, нужно не только заменить атрибут в HTML, но и отключить динамические скрипты Tilda, которые переопределяют отправку. После этого форма будет корректно передавать данные (включая номер телефона) на ваш sendform.php, а оттуда - в Telegram или на email. Если что-то осталось неясным, проверьте консоль браузера (F12) - там будут видны ошибки JavaScript.