Загрузка...

Обработчик формы в телеграм

Тема в разделе Backend создана пользователем napapi_e 15 май 2022. 225 просмотров

  1. napapi_e
    napapi_e Автор темы 15 май 2022 0 25 авг 2020
    Доброго времени суток, пытаюсь сделать для сайта обработчик формы, который будет постить результат в телеграм, столкнулся с проблемой, форма не отправляется
    [IMG]

    Нашел этот код в интернетах, попытался сам сделать его под свои нужды, но увы и ах. Буду рад если кто-то поможет найти ошибки в коде

    PHP
    <?php

    // Токен
    const TOKEN = 'скрыто';

    // ID чата
    const CHATID = 'скрыто';


    if ($_SERVER["REQUEST_METHOD"] == "POST") {

    $fileSendStatus = '';
    $textSendStatus = '';
    $msgs = [];

    // Проверяем не пусты ли поля с именем и телефоном
    if (!empty($_POST['name']) && !empty($_POST['link']) && !empty($_POST['ART']) && !empty($_POST['2D']) && !empty($_POST['3D']) && !empty($_POST['RIGlive2D']) && !empty($_POST['OTHER'])) {

    // Если не пустые, то валидируем эти поля и сохраняем и добавляем в тело сообщения. Минимально для теста так:
    $txt = "";

    // Имя
    if (isset($_POST['name']) && !empty($_POST['name'])) {
    $txt .= "Имя пославшего: " . strip_tags(trim(urlencode($_POST['name']))) . "%0A";
    }

    // ссылка связи
    if (isset($_POST['link']) && !empty($_POST['link'])) {
    $txt .= "Ссылка: " . strip_tags(trim(urlencode($_POST['link']))) . "%0A";
    }


    // art
    if (!empty($_POST["ART"]) && is_array($_POST["ART"])) {
    $txt .= implode(" ", $_POST["ART"]);
    }


    // 2d
    if (!empty($_POST["2D"]) && is_array($_POST["2D"])) {
    $txt .= implode(" ", $_POST["2D"]);
    }

    // 3d
    if (!empty($_POST["3D"]) && is_array($_POST["3D"])) {
    $txt .= implode(" ", $_POST["3D"]);
    }

    //rig
    if (!empty($_POST["RIGlive2D"]) && is_array($_POST["RIGlive2D"])) {
    $txt .= implode(" ", $_POST["RIGlive2D"]);
    }

    // other
    if (!empty($_POST["OTHER"]) && is_array($_POST["OTHER"])) {
    $txt .= implode(" ", $_POST["OTHER"]);
    }

    // Не забываем про тему сообщения
    if (isset($_POST['theme']) && !empty($_POST['theme'])) {
    $txt .= "Тема: " . strip_tags(urlencode($_POST['theme']));
    }

    $textSendStatus = @file_get_contents('https://api.telegram.org/bot'. TOKEN .'/sendMessage?chat_id=' . CHATID . '&parse_mode=html&text=' . $txt);

    if( isset(json_decode($textSendStatus)->{'ok'}) && json_decode($textSendStatus)->{'ok'} ) {

    echo json_encode('SUCCESS');
    } else {
    echo json_encode('ERROR');
    //
    // echo json_decode($textSendStatus);
    }
    } else {
    echo json_encode('NOTVALID');
    }
    }
    else {
    header("Location: /");
    }


    ну и сама форма на всякий

    HTML
    <form class="work-request" name="sendreq" method="POST" autocomplete="off" enctype="multipart/form-data">
    <div class="preloader"></div>
    <p class="contact-form__message"></p>
    <div class="work-request--options">
    <span class="options-a">
    <input id="ART" type="checkbox" value="art" name="ART">
    <label for="ART">
    Арт
    </label>
    <input id="2D" type="checkbox" value="2d model" name="2D">
    <label for="2D">
    Модель 2D
    </label>
    <input id="3D" type="checkbox" value="3d model" name="3D">
    <label for="3D">
    Модель 3D
    </label>
    </span>
    <span class="options-b">
    <input id="RIGlive2D" type="checkbox" value="rig" name="RIGlive2D">
    <label for="RIGlive2D">
    Риг live2D
    </label>
    <input id="OTHER" type="checkbox" value="other" name="OTHER">
    <label for="OTHER">
    Прочее
    </label>
    </span>
    </div>
    <div class="work-request--information">
    <div class="information-name">
    <input id="name" type="text" spellcheck="false" name="name" required>
    <label for="name">Имя</label>
    </div>
    <div class="information-email">
    <input id="link" type="text" spellcheck="false" name="link" required>
    <label for="link">Ссылка для связи</label>
    </div>
    </div>
    <input name="theme" type="hidden" value="заявка с сайта DionWorld.ru">
    <input type="submit" value="Оставить заявку">

    </form>

    js на оочень всякий
    JavaScript
    (function ($) {
    $(".work-request").submit(function (event) {
    event.preventDefault();

    // Сообщения формы
    let successSendText = "Сообщение успешно отправлено";
    let errorSendText = "Сообщение не отправлено. Попробуйте еще раз!";
    let requiredFieldsText = "Заполните поля с именем и контактом";

    // Сохраняем в переменную класс с параграфом для вывода сообщений об отправке
    let message = $(this).find(".contact-form__message");

    let form = $("#" + $(this).attr("id"))[0];
    let fd = new FormData(form);
    $.ajax({
    url: "../assets/php/stg.php",
    type: "POST",
    data: fd,
    processData: false,
    contentType: false,
    beforeSend: () => {
    $(".preloader").addClass("preloader_active");
    },
    success: function success(res) {
    $(".preloader").removeClass("preloader_active");

    // Посмотреть на статус ответа, если ошибка
    // console.log(res);
    let respond = $.parseJSON(res);

    if (respond === "SUCCESS") {
    message.text(successSendText).css("color", "#6163a8");
    setTimeout(() => {
    message.text("");
    }, 4000);
    } else if (respond === "NOTVALID") {
    message.text(requiredFieldsText).css("color", "#d42121");
    setTimeout(() => {
    message.text("");
    }, 3000);
    } else {
    message.text(errorSendText).css("color", "#d42121");
    setTimeout(() => {
    message.text("");
    }, 4000);
    }
    }
    });
    });
    })(jQuery);
     
    15 май 2022 Изменено
  2. SAIYAJIN
    SAIYAJIN 15 май 2022 Заблокирован(а) 13 18 мар 2021
    Код
    if (!empty($_POST['name']) && !empty($_POST['link']) && !empty($_POST['ART']) && !empty($_POST['2D']) && !empty($_POST['3D']) && !empty($_POST['RIGlive2D']) && !empty($_POST['OTHER']))
     
    1. Посмотреть предыдущие комментарии (1)
    2. Обменник
      napapi_e, у тебя здесь идёт проверка что все эти параметры не пустые
    3. Обменник
      napapi_e, то есть тебе надо ограничиться только проверкой на имя и линком
    4. napapi_e Автор темы
      Обменник, большое спасибо, помогло это, + почему-то когда форме присвоен name ни в какую не работало, заменил на id и успех
Загрузка...
Top