PHP-Programmierung – file_get_contents()
URL mit der GET-Methode abrufen

Office-AnwendungenSoftware

Sie möchten den Inhalt eines URLs lesen. Beispielsweise wollen Sie Teile einer Webseite in den Inhalt einer anderen Seite einfügen.


URL mit der GET-Methode abrufen ___

Sie möchten den Inhalt eines URLs lesen. Beispielsweise wollen Sie Teile einer Webseite in den Inhalt einer anderen Seite einfügen. Lesen Sie dazu den URL, indem Sie
ihn an file_get_contents( ) übergeben:

$page = file_get_contents(‘http://www.example.com/robots.txt’,’r’);

Oder Sie verwenden die cURL-Erweiterung:

$c = curl_init(‘http://www.example.com/robots.txt’);
curl_setopt($c, CURLOPT_RETURNTRANSFER,1);
$page = curl_exec($c);
curl_close($c);

Sie können auch die Pear-Klasse HTTP_Request benutzen:

require ‘HTTP/Request.php’;
$r = new HTTP_Request(‘http://
www.example.com/robots.txt’);
$r->sendRequest();
$page = $r->getResponseBody();

Wenn Sie eine geschützte Seite lesen wollen, können Sie auch den Benutzernamen und das Passwort in den URL einfügen. Bei dem folgenden Beispiel ist der Benutzername david und das Passwort hax0r. Hier sehen Sie, wie dies mit file_get_contents( ) gemacht wird:

$page = file_get_contents(‘http://david:hax0r@www.example.com/secrets.html’,’r’);

So funktioniert es mit cURL:

$c = curl_init(‘http://www.example.com/secrets.html’);
curl_setopt($c, CURLOPT_RETURNTRANSFER,1);
curl_setopt($c, CURLOPT_USERPWD,’david:hax0r’);
$page = curl_exec($c);
curl_close($c);

Und so mit HTTP_Request:
$r = new HTTP_Request(‘http://www.example.com/secrets.html’);
$r->setBasicAuth(‘david’,’hax0r’);
$r->sendRequest();
$page = $r->getResponseBody();

Während file_get_contents( ) Umleitungen folgt, die im Response-Header Location angegeben sind, tut HTTP_Request dies nicht. cURL folgt ihnen nur,wenn die Option CURLOPT_FOLLOWLOCATION gesetzt ist. cURL kann noch etwas mehr mit der gelesenen Seite machen.Wenn die Option CURLOPT_RETURNTRANSFER gesetzt ist, gibt curl_exec( ) den Inhalt der Seite in einem String zurück. Um die Seite in einer Datei zu speichern, öffnen Sie mit fopen( ) eine Datei zum Schreiben und setzen die Option CURLOPT_FILE auf das Handle der Datei:

$fh = fopen(‘lokale-kopie-derdateien.html’,’w’) or die($php_errormsg);
$c = curl_init(‘http://www.example.com/files.html’);
curl_setopt($c, CURLOPT_FILE, $fh);
curl_exec($c);
curl_close($c);

Wollen Sie die cURL-Ressource und den Inhalt der gelesenen Seite an eine Funktion übergeben, setzen Sie die Option CURLOPT_WRITEFUNCTION auf den Namen der Funktion:

// URL und Seiteninhalt in einer MySQLDatenbank speichern.
function save_page($c,$page) {
$info = curl_getinfo($c);
mysql_query(“INSERT INTO pages (url,page) VALUES (‘” .mysql_escape_string($info[‘url’]) . “‘,'” . mysql_escape_string($page) . “‘)”);
}
$c = curl_init(‘http://www.example.com/files.html’);
curl_setopt($c, CURLOPT_WRITEFUNCTION,’save_page’);
curl_exec($c);
curl_close($c);

Wenn keine der Optionen CURLOPT_RETURNTRANSFER, CURLOPT_FILE oder CURLOPT_WRITEFUNCTION gesetzt ist, gibt cURL den Inhalt der erhaltenen Seite aus. Die file_get_contents()-Funktion kann wie auchdie Direktiven include und require entfernte Dateien nur dann lesen,wenn die URL-fopen-Wrapper aktiviert sind.Diese sind standardmäßig aktiviert und werden durch die Konfigurationsdirektive allow_url_fopen gesteuert.Unter Windows ist es bei PHP-Versionen vor 4.4 allerdings selbst dann nicht möglich, entfernte Dateien mit include und require zu lesen, wenn allow_url_fopen auf on steht.

Autor: swasi
Anklicken um die Biografie des Autors zu lesen  Anklicken um die Biografie des Autors zu verbergen