cURL Anfrage: prüfen ob Anfrage erfolgreich war?

xep22

Banned
Registriert
Apr. 2018
Beiträge
395
hallo,

ich sende in etwa so automatisierte Nachrichten mithilfe der Telegram API:

PHP:
<?php
function sendMessage($botid,$chatid,$messagetext)
{
    $ch = curl_init('https://api.telegram.org/bot'.$botid.'/sendMessage');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

    $param = array(
        'chat_id' => $chatid,
        'parse_mode' => 'html',
        'text' => $messagetext
    );

    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($param));

    $result = curl_exec($ch);
    curl_close($ch);

    return $result;
}

sendMessage($botid,$chatid,'nachricht hier');
?>

jetzt is ja aber das "Problem", wenn jemand den Bot deaktiviert, an die Person immer noch Nachrichten gesendet werden. das kann bei einer großen Menge an Empfängern ja zu Datenleichen führen. wie kann ich denn prüfen, ob die Nachricht auch wirklich ankommt ? gibts da irgendwie einen http-Header oder sowas ?
 
So, oder funktioniert das in deinem Fall nicht?
PHP:
if(curl_exec($ch) === false)
{
    echo 'Curl-Fehler: ' . curl_error($ch);
}
else
{
    echo 'Operation ohne Fehler vollständig ausgeführt';
}
 
curl_errno() gibt dir CURL-Fehler zurück und mit curl_getinfo($ch, CURLINFO_RESPONSE_CODE) kannst du den HTTP-Statuscode auslesen, zur Auswertung siehe HTTP Status Code Tabelle.

Wie die API dir Fehler zurückgibt findest du in der Dokumentation des Anbieters.

Außerdem aktiviere unbedingt wieder die VERIFYPEER Option, du setzt mit false die Sicherheit durch HTTPS außer Kraft!
 
Zuletzt bearbeitet:
Danke. sollte das nicht so dann funktionieren ? Die Variable ist aber irgendwie immer leer.

PHP:
function sendMessage($botid,$chatid,$message_text)
{
    $ch = curl_init('https://api.telegram.org/bot'.$botid.'/sendMessage');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

    $param = array(
        'chat_id' => $chatid,
        'parse_mode' => 'html',
        'text' => $message_text
    );

    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($param));

    $result = curl_exec($ch);
    $httpstatus = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
    curl_close($ch);

    return $result;
}

sendMessage($botid,$chatid,'Bla');
if($httpstatus != 200)
{
    sendMessage($botid,$admin_chatid,'oh oh');
}
 
Zuletzt bearbeitet:
$httpstatus ist eine lokale Variable und nur innerhalb der Funktion sichtbar. Lies dich mal zu den Grundlagen wie Sichtbarkeit/Scopes ein
 
  • Gefällt mir
Reaktionen: Pfandfinder
Zurück
Oben