URL aufrufen und den Inhalt auswerten

Hallo,
ich würde gerne aus PHP heraus eine URL aufrufen und den Inhalt danach mit PHP auswerten und abhängig vom Inhalt meine Ausgabe erzeugen. Den Aufruf bekomme ich mit header(location=… hin.
Aber danach wird die aufgerufene Seite dargestellt. Wie kann ich die aufgerufene Seite z.B. als String weiter verarbeiten?

Hallo,

das geht mit file_get_contents, dieser Befehl wandelt den Inhalt einer Datei in einen String um.

Grüße,
Kerstin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hallo Kerstin,

danke für deine schnelle Antwort. Mit file_get_contents() kann ich jetzt prinzipiell eine URL in einen String einlesen. Leider habe ich bei einer speziellen Seite Probleme. Es handelt sich um den HTTP-Updater von DynDNS.org (siehe: http://www.dyndns.com/developers/specs/syntax.html). Wenn ich einen IP-Update machen will erhalte ich die Fehlermeldung: "Warning file_get_contents(http: //…@members.dyndns.org…):faild to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in … Wenn ich den Aufruf mit dem Browser mache geht es.
Der DynDNS-Aufruf hat zwei Besonderheiten:

  1. es ist eine Aufruf mit Username und Passwort.
  2. Die Seite die zurückgegeben wird hat keinerlei http-Tags. Wenn ich mir den Quellcode anschaue wird bei erfolgreichem IP-Update nur „good 127.0.0.1“ angezeigt.

Folgender Aufruf kann zum testen verwendet werden: http: //test:test@ members.dyndns.org/nic/update?hostname=test.dyndns.org&myip=127.0.0.1 (die Leerzeichen nach http: und @ entfernen! Die sind nur drin da der Aufruf im Forum sonst nicht richtig dargestellt wird)

Hat jemand eine Idee warum das nicht geht?

Hast Du mal versucht, den User-Agent umzustellen (testweise im Browser mit entsprechendem Plugin)? Vielleicht akzeptiert der Server nicht jeden User-Agent.

Hallo

danke für deine schnelle Antwort. Mit file_get_contents() kann
ich jetzt prinzipiell eine URL in einen String einlesen.
Leider habe ich bei einer speziellen Seite Probleme. Es
handelt sich um den HTTP-Updater von DynDNS.org (siehe:
http://www.dyndns.com/developers/specs/syntax.html). Wenn ich
einen IP-Update machen will erhalte ich die Fehlermeldung:
"Warning file_get_contents(http:
//…@members.dyndns.org…):faild to open stream: HTTP
request failed! HTTP/1.1 403 Forbidden in … Wenn ich den

Das scheint irgend eine PHP-Sache zu sein:

Shell (bash):

$~> wget „http://test:[email protected]/nic/update?hostname=test.dyndns.org&myip=127.0.0.1“

good 127.0.0.1

Perl:

use LWP::Simple;
my $content = get(‚http://test:[email protected]/nic/update?hostname=test.dyndns.org&myip=127.0.0.1‘);
die „Couldn’t read!“ unless defined $content;
print $content;

liefert:

 good 127.0.0.1

Wer weiss. In PHP liefert ein anschliessender Aufruf von:

 ...
 print\_r($http\_response\_header);
 ...

folgendes:

(
 [0] =\> HTTP/1.1 403 Forbidden
 [1] =\> Date: Tue, 06 May 2008 66:66:66 GMT
 [2] =\> Server: Apache
 [3] =\> X-UpdateCode: X
 [4] =\> Content-Length: 8
 [5] =\> Connection: close
 [6] =\> Content-Type: text/html; charset=iso-8859-1
)

Grüße

CMБ

Hallo,
danke für deine Tests. Ich hab mal versucht den gleichen Aufruf mit header('location…) zu machen. In diesem Fall geht das Login-Fenster des Browsers auf. Das ist das gleiche Verhalten als würde ich login:stuck_out_tongue:asswort im Aufruf weglassen. Es scheint so zu sein das PHP das vor dem Senden abschneidet. Wenn ich die URL hier im Beitrag eintragen will passiert das auch immer. Mal nebenbei: wie kann ich denn hier im Forum eine URL eintragen ohne das automatisch ein Link erzeugt wird?

Hallo

danke für deine schnelle Antwort. Mit file_get_contents() kann
ich jetzt prinzipiell eine URL in einen String einlesen.
Leider habe ich bei einer speziellen Seite Probleme. Es
handelt sich um den HTTP-Updater von DynDNS.org (siehe:
http://www.dyndns.com/developers/specs/syntax.html). Wenn ich
einen IP-Update machen will erhalte ich die Fehlermeldung:
"Warning file_get_contents(http:
//…@members.dyndns.org…):faild to open stream: HTTP
request failed! HTTP/1.1 403 Forbidden in … Wenn ich den

Das scheint irgend eine PHP-Sache zu sein:

nein, es ist eine dyndns-sache:

schriebsel von ethereal:

GET /nic/update HTTP/1.0
Authorization: Basic dGVzdDp0ZXN0
Host: members.dyndns.org

HTTP/1.1 403 Forbidden
Date: Tue, 06 May 2008 13:22:48 GMT
Server: Apache
X-UpdateCode: X
Content-Length: 8
Connection: close
Content-Type: text/html; charset=iso-8859-1

**badagent**

spot hatte recht mit seiner vermutung.

http://www.nslu2-info.de/showthread.php?t=4722

Hallo Jörg,

Das scheint irgend eine PHP-Sache zu sein:

nein, es ist eine dyndns-sache:
schriebsel von ethereal:

GET /nic/update HTTP/1.0
Authorization: Basic dGVzdDp0ZXN0
Host: members.dyndns.org

HTTP/1.1 403 Forbidden
Date: Tue, 06 May 2008 13:22:48 GMT
Server: Apache
X-UpdateCode: X
Content-Length: 8
Connection: close
Content-Type: text/html; charset=iso-8859-1

badagent

Aha! Ich hab mal nachgeschaut. PHP 5.x sendet per default
als User-Agent den leeren String ‚‘.

spot hatte recht mit seiner vermutung.

Fast Recht. Es reicht offensichtlich *irgendein* Agent,
das hier geht z.B.:

 ...
 $address = 'http://test:[email protected]/nic/update?hostname=test.dyndns.org&myip=127.0.0.1';
 ini\_set('user\_agent','YourBadDreams 7.13;'); 
 $content = file\_get\_contents($address);
 echo($content);
 ...

Grüße

CMБ

Danke an Alle,
ich hatte schon befürchtet das geht mit PHP prinzipiell nicht und ich müsste jetzt grössere Verenkungen machen um den DynDNS-Update zu machen.

Gruss soso