Thomek
@Thomek

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

Как с формы на сайте при нажатии на кнопку «Отправить» отправить данные и сообщение не меняя ничего на самой форме в артикле Но поменять в 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 = "$subject\nИмя: $name\nТелефон: $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;
 }
 ?>
  • Вопрос задан
  • 145 просмотров
Пригласить эксперта
Ответы на вопрос 2
privedentsev
@privedentsev
У Вас есть две переменные, которые принимают значение переданные форму.
Переменная $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 'Сообщение об ошибке';
}
?>
Ответ написан
@SidVisceos
После этого
$name = trim($_POST["fullname"]);
$phone = trim($_POST["phone"]);

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

И подправить это:
$telegram = "$subject\nИмя: $name\nТелефон: $phone\nСообщение: $message";


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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы