9.8 Net_Curl 

Besprochene Version: 1.0.1beta | Lizenz: PHP-Lizenz 2.02 |
Klassendatei(en): Net/Curl.php |
Net_Curl stellt ein objektorientiertes Interface für die CURL-Funktionen von PHP dar.
CURL ist die Abkürzung für »Client URL« und basiert auf der Bibliothek libcurl, die es ermöglicht, auf einfache Art und Weise Daten von oder zu einem anderen Server zu transferieren. Dabei unterstützt CURL nicht nur einen direkten Abruf, sondern auch die Nutzung von Proxies oder die Authentifizierung mittels Benutzernamen und Passwort.
Möchten Sie sehr umfangreiche CURL-Operationen durchführen, die sich nicht im Abruf von Daten und im Upload von einfachen Formulardaten erschöpfen, sollten Sie auf die CURL-Funktionen von PHP zurückgreifen, da der Funktionsumfang von Net_Curl noch stark eingeschränkt ist.
Zwar kennt das Paket insgesamt nur vier Methoden, aber dafür gibt es eine recht stattliche Anzahl von Eigenschaften, mit denen der Ablauf des Datentransfers bestimmt werden kann.
Mit den folgenden Zeilen würde die URL http://www.heise.de/newsticker/ abgerufen und ausgegeben:
require_once('Net/Curl.php'); // Objekt ableiten $curl = new Net_Curl('http://www.heise.de/newsticker/'); // CURL-Abfrage starten $res=$curl->execute(); // Verbindung beenden $curl->close(); // Ist ein Fehler aufgetreten? if (true===PEAR::isError($res)) { die ($res->getMessage()); } // Eingelesene Daten ausgeben echo $res;
Listing 9.11 Abrufen einer URL mit Net_Curl
Die Nutzung ist auch hier wieder denkbar einfach gehalten. Der Konstruktor bekommt direkt die URL der Seite übergeben, die abgerufen werden soll. Diese können Sie alternativ auch über die Eigenschaft url festlegen. Die Methode execute() führt die eigentliche Abfrage aus und gibt die ermittelten Daten als String zurück. Net_Curl unterstützt auch eine direkte Ausgabe der Daten; ich würde Ihnen aber empfehlen, diese erst in einer Variablen abzulegen. Damit haben Sie eine bessere Möglichkeit, auf das Auftreten eines Fehlers zu prüfen.
Die Methode close() beendet die Verbindung schließlich wieder.
Zusätzlich ist noch eine weitere Methode deklariert: verbose_all(). Sie ist zur Fehlersuche gedacht und schaltet die Ausgabe von zusätzlichen Informationen ein.
Alle weiteren Möglichkeiten der CURL-Funktionen werden mithilfe von Eigenschaften gesteuert, was dazu führt, dass die Liste der Eigenschaften sehr lang ist. In Tabelle 9.3 finden Sie einige der gängigen Eigenschaften. Hierbei handelt es sich um Eigenschaften, die zum jetzigen Zeitpunkt funktionieren. Weitere Funktionalitäten sind noch vorgesehen, wobei diese leider noch zu Fehlern führen, so dass ich sie hier nicht erläutert habe. Wenn Sie Net_Curl einsetzen möchten, prüfen Sie bitte das Change-Log daraufhin, welche Eigenschaften inzwischen funktionieren.
Wenn Sie mithilfe von Net_Curl Daten an ein PHP-Script übergeben möchten, das mit einem Passwort gesichert ist, könnte das mit einem Script wie diesem gelöst werden:
require_once('Net/Curl.php'); // Objekt ableiten $curl = new Net_Curl('http://www.example.com/geheim/dat.php'); // Passwort und Benutzername fuer die Authentifikation // beim Server $curl->username='cmoehrke'; $curl->password='geheim'; // Uebertragungsmethode $curl->type='post'; // Daten, die uebertragen werden sollen $daten = array ( 'vorname' => 'Carsten', 'nachname' => 'Möhrke'); $curl->fields=$daten; // CURL-Abfrage starten $res=$curl->execute();_$ret_// Verbindung beenden $curl->close(); // Fehler aufgetreten? if (true===PEAR::isError($res)) { die ($res->getMessage()); } // Eingelesene Daten ausgeben echo $res;