Wie man eine POST-Anfrage in PHP sendet: 4 funktionierende Methoden mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Wie man eine POST-Anfrage in PHP sendet: Vom Anfänger zum Profi



Haben Sie jemals die Situation erlebt, in der Ihr PHP-Skript mit einem anderen Server „sprechen“ musste? Formulardaten senden, eine externe API aufrufen oder einfach prüfen, ob ein entfernter Endpunkt funktioniert? Wenn ja, haben Sie sich sicherlich gefragt: „How do I send a POST request with PHP?“. Dies ist eine der häufigsten Fragen auf Stack Overflow, und das aus gutem Grund – die Interaktion zwischen Servern ist das Fundament des modernen Webs.



In diesem Artikel werden wir vier bewährte Methoden zum Senden einer POST-Anfrage in PHP behandeln. Sie erfahren, wie Sie dies mit cURL, file_get_contents, stream_context_create und dem leistungsstarken HTTP-Client Guzzle tun. Wir zeigen nicht nur den Code – wir erklären, welche Methode Sie für Ihre Aufgabe wählen sollten und wie Sie typische Fehler vermeiden.



Los geht's! 🚀



Was ist eine POST-Anfrage und warum wird sie in PHP benötigt?



POST ist eine der Methoden des HTTP-Protokolls, die zum Senden von Daten an einen Server dient. Im Gegensatz zu GET, bei dem die Parameter in der URL sichtbar sind, überträgt POST die Daten im Anfragetext. Dies ist praktisch, wenn Sie:



  • Ein Registrierungs- oder Bestellformular senden;
  • Eine REST-API aufrufen (z. B. einen neuen Eintrag in einem CRM erstellen);
  • Eine Datei an einen entfernten Server übertragen;
  • Sich bei einem externen Dienst anmelden.


PHP hat keine eingebaute Funktion „sendPostRequest()“, aber es gibt mehrere flexible Werkzeuge, die dies ermöglichen. Schauen wir uns jede Methode an.



Methode 1: cURL – der Allrounder



cURL (Client URL Library) ist wohl die beliebteste Methode zum Senden von HTTP-Anfragen in PHP. Es unterstützt eine Vielzahl von Protokollen, kann mit SSL, Cookies, Timeouts und Proxys umgehen. Wenn Sie etwas Ernsthafteres als ein Übungsskript schreiben – werfen Sie einen Blick auf cURL.



Einfache POST-Anfrage mit cURL



Hier ist ein grundlegendes Beispiel, das eine POST-Anfrage an den Testserver JSONPlaceholder sendet und die Antwort ausgibt:



// 1. Neue cURL-Ressource erstellen$ch = curl_init();

// 2. URL-Endpunkt angebencurl_setopt($ch, CURLOPT_URL, "https://jsonplaceholder.typicode.com/posts");

// 3. Als POST-Anfrage kennzeichnencurl_setopt($ch, CURLOPT_POST, 1);

// 4. Daten übergeben (PHP-Array wird automatisch in einen Abfragestring umgewandelt)curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([ 'title' => 'Mein erster Beitrag', 'body' => 'Dies ist der Text des Beitrags', 'userId' => 1]));

// 5. Ergebnis zurückgeben, nicht direkt ausgebencurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// 6. Anfrage ausführen$response = curl_exec($ch);

// 7. Auf Fehler prüfenif (curl_errno($ch)) { echo 'cURL-Fehler: ' . curl_error($ch);} else { // 8. Verbindung schließen curl_close($ch); // 9. Ergebnis ausgeben echo $response;}


POST mit JSON und Headern



Moderne APIs arbeiten meist mit JSON. So senden Sie JSON-Daten und setzen den richtigen Content-Type-Header:



$data = [    'email' => 'user@example.com',    'password' => 'secret123'];

$ch = curl_init('https://api.example.com/login');curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json', 'Accept: application/json']);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); // HTTP-Statuscode abrufen

curl_close($ch);

if ($httpCode === 200) { $result = json_decode($response, true); print_r($result);} else { echo "Fehler: HTTP $httpCode";}


Warum cURL? Es bietet vollständige Kontrolle: Sie können Timeouts einstellen (CURLOPT_TIMEOUT), Weiterleitungen folgen (CURLOPT_FOLLOWLOCATION), eine Datei senden (CURLFile) und sogar mit FTP arbeiten. Der einzige Nachteil ist, dass der Code recht ausführlich wird.



Metho

Blogs

Buchempfehlungen