Inhaltsverzeichnis
Was ist und macht cURL?
cURL ist eine PHP-Bibliothek und ein Befehlszeilentool, mit dem Dateien über HTTP und FTP gesendet und empfangen werden können. Es können Proxys verwenden werden, Daten über SSL-Verbindungen übertragen, Cookies gesetzt und sogar Dateien abrufen, die durch eine Anmeldung geschützt sind.
cURL (Client for URLs) wird für die Übertragung von Dateien in Computernetzwerken eingesetzt. cURL erleichtert die Verbindung zwischen verschiedenen Websites und Domänen.
cURL nutzt für alle Funktionen die Bibliothek libcurl.
Unterstütze Betriebssysteme und Protokolle
URL wurde auf die folgenden Betriebssysteme portiert, darunter:
- Solaris
- NetBSD
- FreeBSD
- OpenBSD
- Linux
- Windows
- AmigaOS
- OS/2
- OpenVMS
- RISC OS
- Novell Netware
- DOS
„Client for URLs“ist es ein Werkzeug zum Herunter- oder Hochladen von Dateien über eine Internetadresse. Eine Übertragung von Daten per POST ist ebenfalls möglich.
Zu den unterstützten Protokollen gehören unter anderem:
- FILE
- FTP, FTPS
- Gopher
- HTTP, HTTPS
- IMAP, IMAPS
- POP3
- SCP, SFTP
- SMTP, SMTPS
- Telnet
Beispiel: Quelltext einer Website mit cURL und PHP lesen
Wenn Du den Quelltext (Quellcode) einer fremden Website mit einem PHP-Script auslesen und auswerten möchtest, bietet sich die cURL Bibliothek an.
<?php // erzeuge einen neuen cURL-Handle $ch = curl_init(); // setze die URL und andere Optionen curl_setopt($ch, CURLOPT_URL, "http://www.example.com/"); curl_setopt($ch, CURLOPT_HEADER, false); // führe die Aktion aus und gebe die Daten in die Variable $quellcode $quellcode = curl_exec($ch); // schließe den cURL-Handle und gebe die Systemresourcen frei curl_close($ch); ?>
Eine Liste aller cURL-Optionen findest Du hinter DIESEM Link.
Beispiel: Daten per POST mit cURL an externe Website senden
Ich möchte Daten per HTTP POST von einer Website zu einer fremden Website auf einer anderen Domain mit der cURL versenden. Auch in diesem Fall ist die Bibliothek libcurl von großem Vorteil, wenn sie auf dem Server aktiviert ist.
Am Anfang steht immer die Erzeugung eines sogenannten Handle mit dem Befehl curl_init().
Danach können mit dem Befehl
curl_setopt()
verschiedene (oder auch keine) Optionen für das angegeben cURL-Handle gesetzt werden. Der angelegte Handle $ch wird anschließend mit dem Befehl curl_exec($ch) ausgeführt.
Die libcurl Bibliothek kann mit HTTP als auch HTTPS verwendet werden.
Ausgangs-Script sendet Daten per cURL-POST an Zielseite
// * // A very simple PHP example that sends a HTTP POST to a remote site // * // === erzeuge ein cURL Handle $ch = curl_init(); // === Lege die Ziel-URL fest curl_setopt($ch, CURLOPT_URL,"https://www.entfernte-domain.de/curl_test.php"); // === Du möchtest einen POST absenden curl_setopt($ch, CURLOPT_POST, 1); // === Welche Daten sollen versendet werden? curl_setopt($ch, CURLOPT_POSTFIELDS, "url=".$Domain."&seite=".$Seite."&datum=".$datum); // === Erhalte eine Rückmeldung vom Server $server_output = curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // === cURL-Handle ausführen curl_exec($ch); // Rückmeldung des fernen Server ausgeben echo $server_output; // === cURL-Handle beenden curl_close($ch);
Das sieht jetzt dank der Kommentare relativ umfangreich aus. Doch um die Kommentare bereinigt, zeigt sich ein kleines Code-Snippet.
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL,"https://www.entfernte-domain.de/curl_test.php"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, "url=".$Domain."&seite=".$Seite."&datum=".$datum); curl_exec($ch);
Ziel-Website verarbeitet empfangene Post-Daten
Wir erzeugen eine Datei „curl_test.php“ auf einem fremden Server. Diese Datei soll per cURL POST-Daten empfangen und in eine Datenbank eintragen.
<?php // Kleines Testscript zur Ausgabe der POST-Daten echo "<pre>cURL POST: "; print_r($_POST); echo "</pre>";
Im Ausgangs-Script wurde mit dem Befehl CURLOPT_RETURNTRANSFER festgelegt, dass eine Rückmeldung erfolgen soll. Diese Rückmeldung besteht aus dem angezeigten Inhalt der Ziel-Webseite.
cURL POST: Array ( [url] => https://www.bye-coronavirus.de [seite] => /so-lang-ueberlebt-der-coronavirus-in-der-luft-und-auf-oberflaechen-vorlaeufige-laborergebnisse/wissen/13/ [zeichen] => 2463 [datum] => 2023-05-12 19:21:57 )
Diese von der Zielwebsite empfangenen POST-Daten können jetzt weiterverarbeitet, in eine MySQL-Tabelle eingetragen werden.
Beispiel: Auf geschützter Website mit cURL einloggen, anmelden
… Fortsetzung folgt …..