Не передаётся значение ключа в форме
при отправке формы, в телеграм приходит только ключ, значение где-то теряется, хотя на самом сайте уходит и ключ и значение
<div class="col-lg-8 mx-auto">
<form action="/telegram.php" method="POST" class="form">
<div class="row col-12">
<div class="col-6">
<input required type="text" name="Name" class="form-control" placeholder="Your Name">
</div>
<div class="col-6">
<input required type="text" name="Email" class="form-control mx-4" placeholder="Your Email">
</div>
</div>
<div class="col-12 my-5">
<input required type="text" name="Title" class="form-control" placeholder="Your Title">
</div>
<div class="form-floating">
<textarea required class="form-control text_area" placeholder="Your Comments" id="floatingTextarea2" style="height: 100px"></textarea>
<label for="floatingTextarea2">Your Comments</label>
</div>
<button type="submit" class="btn btn-primary my-3 btn-send-form p-3">SEND MESSAGE</button>
</form>
</div>
<?php
//Переменная $name,$phone, $mail получает данные при помощи метода POST из формы
$name = $_POST['Name'];
$email = $_POST['Email'];
$title = $_POST['Title'];
//в переменную $token нужно вставить токен, который нам прислал @botFather
$token = "1509208531:AAGtyzlfLldE1OTEJtggnyTv3N3zjHTw_7A";
//нужна вставить chat_id
$chat_id = "-496705444";
//Далее создаем переменную, в которую помещаем PHP массив
$arr = array(
'Username: ' => $name,
'Email: ' => $email,
'Title: ' => $title
);
//При помощи цикла перебираем массив и помещаем переменную $txt текст из массива $arr
foreach($arr as $key => $value) {
$txt .= "<b>".$key."</b> ".$value."%0A";
};
//Осуществляется отправка данных в переменной $sendToTelegram
$sendToTelegram = fopen("https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text={$txt}","r");
?>
Ответы (1 шт):
Автор решения: Daniil Loban
→ Ссылка
Проверил на своем боте ваш скрипт, все работает. Но поля пустые, так что нужно смотреть почему они не приходят, возможно в Post запросе поля отправляются в нижнем регистре.
$name = 'Name';
$email = 'Email';
$title = 'Title';
Это не верные предположения:
мне кажется тут ошибка формирования html ('%0A' - такого в нем не бывает)
попробуйте так:
$txt = "<pre>";
foreach($arr as $key => $value) {
$txt .= "<b>".$key."</b>".$value."\n";
};
$txt .= "</pre>";
$txt = urlencode($txt);
тут аналог на js (увы php тут не запустишь)
const arr = {
Username: "Иван",
Email: "[email protected]",
Title: "Заголовок"
}
let $txt;
$txt = "<pre>";
Object.entries(arr).forEach(entry => {
const [$key, $value] = entry;
$txt += "<b>"+$key+"</b>"+":"+" "+$value+"\n";
})
$txt += "</pre>";
document.querySelector('#out').innerHTML =$txt;
document.write(encodeURI($txt))
<div id="out"></div>
