Как отправить сообщение с формы на сайте в телеграмм бот?

Ссылка скопирована
4 февраля 2026 1 ответ

Как с формы на сайте при нажатии на кнопку «Отправить» отправить данные и сообщение не меняя ничего на самой форме в артикле Но поменять в php коде ниже ! Сам код работает и отправляет сообщения только в виде ( Имя и Телефон ) И отправляет только при каждом обновлении страницы и ничего что было введено при отправлении! (Да я вводил токен и ид бота в TOKEN и chatID ) Как поправить этот php код чтобы он отправлял все данные что введены в форму на сайте при нажатии кнопки ?!

Вот весь код:

<article>     <br />     <?php echo $Body; ?>     <div style="margin-top: 15px; border-radius: 5px;" class="panel panel-default"> 	    <div id=" " class="panel-body"> 	        <form action="aj/mail_z" onsubmit="submit_send('contact_form');return false;"  id="contact_form"> 	            <div class="form-group col-lg-6"> 	                <label>Ваше имя:</label> 	                <span data-valgroup="contact_form"  data-validel="contact_form-name"  data-valtype="reqired" data-valerrormes="Укажите Ваше имя!" class="validator" >*</span> 	                <input class="form-control input-sm" name="Fio" id="contact_form-name" type="text" value="<?php echo "{$user_login->data['Login']}"; ?>" /> 	            </div> 	            <div class="form-group col-lg-6"> 	                <label>Ваш E-mail:</label> 	                <span data-valgroup="contact_form"  data-validel="contact_form-email"  data-valtype="reqired" data-valerrormes="Укажите Ваш E-mail!" class="validator" >*</span> 	                <input class="form-control input-sm" name="Email" type="text" id="contact_form-email" value="<?php echo "{$user_login->data['Email']}"; ?>" /> 	            </div> 	            <div class="clearfix"></div> 	            <div class="form-group col-lg-12"> 	                <label>Сообщение</label> 	                <span data-valgroup="contact_form"  data-validel="contact_form-mes"  data-valtype="reqired" data-valerrormes="Сообщение не может быть пустым!" class="validator" >*</span> 	                <textarea name="Body" class="form-control" id="contact_form-mes" rows="5"></textarea>                                     	            </div> 	            <div class="clearfix"></div> 	            <input name="Tema" id="tema" type="hidden" value="Сообщение с формы обратной связи" /> 	            <div style="text-align:center; "><button type="submit" class="btn btn-primary btn-lg" >Отправить</button></div> 	        </form> 	    </div> 	</div> </article>  <?php $token = "TOKEN"; $chat_id = "chatID";   $name = trim($_POST["fullname"]); $phone = trim($_POST["phone"]);  $success = 'Ваша заявка была успешно отправлена.'; $error = 'Произошла ошибка повторите пожалуйста.';   $telegram = "$subjectnИмя: $namenТелефон: $phone";  $data = [    'chat_id' => $chat_id,    'text' => $telegram,  'parse_mode' => 'HTML'  ]; $response =   file_get_contents("https://api.telegram.org/bot$token/sendMessage?" .   http_build_query($data) );   if ($response) {     echo $success;  } else {      echo $error;  }  ?>

<article> <br /> <?php echo $Body; ?> <div style="margin-top: 15px; border-radius: 5px;" class="panel panel-default"> <div id=" " class="panel-body"> <form action="aj/mail_z" onsubmit="submit_send('contact_form');return false;" id="contact_form"> <div class="form-group col-lg-6"> <label>Ваше имя:</label> <span data-valgroup="contact_form" data-validel="contact_form-name" data-valtype="reqired" data-valerrormes="Укажите Ваше имя!" class="validator" >*</span> <input class="form-control input-sm" name="Fio" id="contact_form-name" type="text" value="<?php echo "{$user_login->data['Login']}"; ?>" /> </div> <div class="form-group col-lg-6"> <label>Ваш E-mail:</label> <span data-valgroup="contact_form" data-validel="contact_form-email" data-valtype="reqired" data-valerrormes="Укажите Ваш E-mail!" class="validator" >*</span> <input class="form-control input-sm" name="Email" type="text" id="contact_form-email" value="<?php echo "{$user_login->data['Email']}"; ?>" /> </div> <div class="clearfix"></div> <div class="form-group col-lg-12"> <label>Сообщение</label> <span data-valgroup="contact_form" data-validel="contact_form-mes" data-valtype="reqired" data-valerrormes="Сообщение не может быть пустым!" class="validator" >*</span> <textarea name="Body" class="form-control" id="contact_form-mes" rows="5"></textarea> </div> <div class="clearfix"></div> <input name="Tema" id="tema" type="hidden" value="Сообщение с формы обратной связи" /> <div style="text-align:center; "><button type="submit" class="btn btn-primary btn-lg" >Отправить</button></div> </form> </div> </div> </article> <?php $token = "TOKEN"; $chat_id = "chatID"; $name = trim($_POST["fullname"]); $phone = trim($_POST["phone"]); $success = 'Ваша заявка была успешно отправлена.'; $error = 'Произошла ошибка повторите пожалуйста.'; $telegram = "$subjectnИмя: $namenТелефон: $phone"; $data = [ 'chat_id' => $chat_id, 'text' => $telegram, 'parse_mode' => 'HTML' ]; $response = file_get_contents("https://api.telegram.org/bot$token/sendMessage?" . http_build_query($data) ); if ($response) { echo $success; } else { echo $error; } ?>

Дополнительно:

Ответы:

У Вас есть две переменные, которые принимают значение переданные форму.
Переменная $name сохраняет в себе значение из поля в форме с названием "fullname", а переменная $phone сохраняет телефон.
Итого: нужно добавить еще одну переменную и присвоить им правильные значения, которые соответствуют Вашей форме, а затем сделать проверку, если значение всех полей не пустые, отправить сообщение в ТГ.

Рабочий код отправки:

<?php $txt = ""; $fio = $_POST['Fio']; // Присваиваем значение с поля "Укажите Ваше имя!" $email = $_POST['Email']; // Присваиваем значение с поля "Укажите Ваш E-mail!" $massage = $_POST['Body']; // Присваиваем значение с поля "Сообщение не может быть пустым!" $token = ""; // Прописываем токен $chat_id = ""; // Прописываем ID $arr = array(   'ФИО: ' => $fio,   'E-mail: ' => $email,   'Сообщение: ' => $massage );  foreach($arr as $key => $value) {   $txt .= "<b>".$key."</b> ".$value."%0A"; };   // Проверяем, если все переменные не пустые, отправляем сообщение на сервер if($fio != "" and $email != "" and $massage != "") {   $sendToTelegram = fopen("https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text={$txt}","r"); } else {   header('Location: /'); // Прописываем куда перенаправлять, если неправильно заполнена форма. Можно прописать вместо header(); -  echo 'Сообщение об ошибке'; } ?>

<?php $txt = ""; $fio = $_POST['Fio']; // Присваиваем значение с поля "Укажите Ваше имя!" $email = $_POST['Email']; // Присваиваем значение с поля "Укажите Ваш E-mail!" $massage = $_POST['Body']; // Присваиваем значение с поля "Сообщение не может быть пустым!" $token = ""; // Прописываем токен $chat_id = ""; // Прописываем ID $arr = array( 'ФИО: ' => $fio, 'E-mail: ' => $email, 'Сообщение: ' => $massage ); foreach($arr as $key => $value) { $txt .= "<b>".$key."</b> ".$value."%0A"; }; // Проверяем, если все переменные не пустые, отправляем сообщение на сервер if($fio != "" and $email != "" and $massage != "") { $sendToTelegram = fopen("https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text={$txt}","r"); } else { header('Location: /'); // Прописываем куда перенаправлять, если неправильно заполнена форма. Можно прописать вместо header(); - echo 'Сообщение об ошибке'; } ?>

  • Danil Privedentsev Сообщение не отправляется в тг бот, А когда было header(); невозможно было попасть на страницу с формой, А с echo постоянно отображается «Сообщение об ошибке» на странице! Что делать в такой ситуации?!)
  • Thomek, да, я посмотрел твой код внимательней и его нужно доработать.
    Начнем с того, что тебе придется внести маленькие правки внутри тега:
    <article>

    Заменим эту строчку:

    &lt;form action="aj/mail_z" onsubmit="submit_send('contact_form');return false;"  id="contact_form"&gt;

    &lt;form action="aj/mail_z" onsubmit="submit_send('contact_form');return false;" id="contact_form"&gt;

    на эту:
    <form action="" id="contact_form" method="POST">
    В ней мы говорим, что принимаем данные с формы в этом же документе методом "POST".

    Дальше, мы немного перепишем мой код, добавив вот это условие:

    if ($_SERVER['REQUEST_METHOD'] === 'POST') { }

    if ($_SERVER['REQUEST_METHOD'] === 'POST') { }

    В нем мы проверяем, что если данные не передавались (кнопка "Отправить" не нажимали), то код внутри не выполняем. Как только кнопка "Отправить" будет нажата, сразу сработает скрипт и отправит данные на сервер.

    Теперь весь код на PHP:

    &lt;?php if ($_SERVER['REQUEST_METHOD'] === 'POST') { 	$txt = ""; 	$fio = $_POST['Fio']; // Присваиваем значение с поля "Укажите Ваше имя!" 	$email = $_POST['Email']; // Присваиваем значение с поля "Укажите Ваш E-mail!" 	$massage = $_POST['Body']; // Присваиваем значение с поля "Сообщение не может быть пустым!" 	$token = ""; // Прописываем токен 	$chat_id = ""; // Прописываем ID 	$arr = array(   	'ФИО: ' =&gt; $fio,   	'E-mail: ' =&gt; $email,   	'Сообщение: ' =&gt; $massage 	);  	foreach($arr as $key =&gt; $value) {   		$txt .= "&lt;b&gt;".$key."&lt;/b&gt; ".$value."%0A"; 	};  	// Проверяем, если все переменные не пустые, отправляем сообщение на сервер 	if($fio != "" and $email != "" and $massage != "") {   		$sendToTelegram = fopen("https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&amp;parse_mode=html&amp;text={$txt}","r"); 		echo 'Сообщение отправлено!'; 	} else {   		header('Location: /'); // Прописываем куда перенаправлять, если неправильно заполнена форма. Можно прописать вместо header(); -  echo 'Сообщение об ошибке'; 	} } ?&gt;

    &lt;?php if ($_SERVER['REQUEST_METHOD'] === 'POST') { $txt = ""; $fio = $_POST['Fio']; // Присваиваем значение с поля "Укажите Ваше имя!" $email = $_POST['Email']; // Присваиваем значение с поля "Укажите Ваш E-mail!" $massage = $_POST['Body']; // Присваиваем значение с поля "Сообщение не может быть пустым!" $token = ""; // Прописываем токен $chat_id = ""; // Прописываем ID $arr = array( 'ФИО: ' =&gt; $fio, 'E-mail: ' =&gt; $email, 'Сообщение: ' =&gt; $massage ); foreach($arr as $key =&gt; $value) { $txt .= "&lt;b&gt;".$key."&lt;/b&gt; ".$value."%0A"; }; // Проверяем, если все переменные не пустые, отправляем сообщение на сервер if($fio != "" and $email != "" and $massage != "") { $sendToTelegram = fopen("https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&amp;parse_mode=html&amp;text={$txt}","r"); echo 'Сообщение отправлено!'; } else { header('Location: /'); // Прописываем куда перенаправлять, если неправильно заполнена форма. Можно прописать вместо header(); - echo 'Сообщение об ошибке'; } } ?&gt;

  • Danil Privedentsev, Теперь работает, сообщения приходят в телеграмм ! Но только теперь не отправляет в админку сайта без этого
    action="aj/mail_z" onsubmit="submit_send('contact_form');return false;"

    action="aj/mail_z" onsubmit="submit_send('contact_form');return false;"

    А в месте с этим отправляет только в админку.

  • Thomek, хорошо, а если так сделать, то что произойдет?
    action="aj/mail_z" onsubmit="submit_send('contact_form');return false;" method="POST"

    action="aj/mail_z" onsubmit="submit_send('contact_form');return false;" method="POST"

  • Danil Privedentsev, Ничего не происходит, ничего никуда не отправляется и сообщение остаётся в форме!

После этого

$name = trim($_POST["fullname"]); $phone = trim($_POST["phone"]);

$name = trim($_POST["fullname"]); $phone = trim($_POST["phone"]);

Написать это:
$message = trim($_POST["Body"]);

И подправить это:

$telegram = "$subjectnИмя: $namenТелефон: $phonenСообщение: $message";

$telegram = "$subjectnИмя: $namenТелефон: $phonenСообщение: $message";

Надеюсь это не продакшн код? Это же для себя, просто играетесь? Тут не хватает кучи проверок.

  • SidVisceos На сайт!
  • Thomek, на сайт для себя? Такое нельзя же выкладывать в общий доступ.
  • SidVisceos, А кто запретит?!
  • Thomek, разумеется никто
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Юрий Linux Ответ

Для отправки сообщения с формы на сайте в телеграмм бот, вам понадобится использовать API телеграмма и язык программирования, который вы используете на своем сайте. В данном случае, предположим, что вы используете PHP.

Прежде всего, вам нужно создать бота в телеграмме и получить токен доступа к API. Для этого вам необходимо обратиться к @BotFather в телеграмме и следовать его инструкциям.

Затем вам нужно настроить обработку формы на вашем сайте. В HTML форме добавьте необходимые поля для ввода данных, а также скрытое поле для хранения токена вашего бота. Пример HTML формы:

 
 
 
    <textarea name="message"></textarea>

<textarea name="message"></textarea>

Создайте файл send_message.php, который будет обрабатывать отправку сообщения. В этом файле вы можете использовать библиотеку cURL для отправки POST запроса к API телеграмма. Пример кода PHP:

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$bot_token = $_POST['bot_token'];

$text = "Name: $name

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно