Задать вопрос
@suchrile

Failed to open stream: HTTP request failed! В чем причина?

Вечер добрый!

Проблема с отправкой данных через Telegram API.
В PHP файле получаю отправленные через AJAX значения input`ов и строки из БД по id. Записываю эти строки в массив и затем конвертирую его в строку при помощи implode();
Далее эти данные собираются в массив, преобразовываются в строку и отправляются через fopen. Если с полученными значениями input`ов все хорошо, то при попытке отправить еще и строку полученную из БД получаю ошибку:
failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request на строке:
$sendToTelegram = fopen("https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text={$txt}","r");

Подскажите, пожалуйста, как можно решить проблему.

PHP-код:
foreach ($idItems as $id) {
        $conn = connect();
        $query = mysqli_query($conn, "SELECT title FROM `catalog` WHERE id = $id");

        while($result = mysqli_fetch_assoc($query)) {
            $title[] = $result['title'];
        }
    }

    $title = implode(", ", $title);     
    $name = $_POST['name'];
    $phone = $_POST['phone'];
    $email = $_POST['email'];
    $city = $_POST['city'];
    $address = $_POST['address'];
    $index = $_POST['index'];

    $arr = array(
    'Покупатель: ' => $name,
    'Телефон: ' => $phone,
    'Email: ' => $email,
    'Город: ' => $city,
    'Адрес: ' => $address,
    'Индекс: ' => $index,
    'Товар: ' => $title
    );

    foreach($arr as $key => $value) {
    $txt .= "<b>".$key."</b> ".$value."%0A";
    };

    $sendToTelegram = fopen("https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text={$txt}","r");
  • Вопрос задан
  • 1448 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
@suchrile Автор вопроса
После нескольких часов поиска решения оказалось, что проблема была в пробеле после тега </b> в этой строчке:
$txt .= "<b>".$key."</b> ".$value."%0A";
Почему все работало без переменной title остается загадкой...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@galaxy
Попробуй $txt = urlencode($txt);
Ответ написан
Ваш ответ на вопрос

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

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