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;
 }
 ?>
  • Вопрос задан
  • 191 просмотр
Пригласить эксперта
Ответы на вопрос 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";


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

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

Похожие вопросы