Inhalt einer entfernten Datei auslesen
trunx
- php
Hallo Forum,
ich möchte gern mit php auf eine url zugreifen, also etwas in der Art
fopen("http://www.example.org");
file_get_contents("http://www.example.org");
http_request(...);
alle meine bisherigen Versuche scheiterten, ich bekomme z.B. als Fehlermeldung "bad http-Request"
oder das die Parameter falsch sind (angeblich sind für fopen nur 2 erlaubt?) oder das die Funktionen unbekannt sind etc.
Hat jemand von euch eine Idee, wie dies am einfachsten zu bewerkstelligen ist, ohne dass man jetzt groß in der php.ini was ändern oder irgendwelche Zusatzmodule laden muss?
Die abgefragte url ist eine html-Seite, schön wäre also wenn die Abfrage als string vorliegt, allerdings habe ich auch kein Problem damit, wenn quasi ein screenshot erstellt wird, sprich aus dem stream nur ein image gemacht werden könnte.
vielen Dank
trunx
ich möchte gern mit php auf eine url zugreifen, also etwas in der Art
...
Hat jemand von euch eine Idee, wie dies am einfachsten zu bewerkstelligen ist, ohne dass man jetzt groß in der php.ini was ändern oder irgendwelche Zusatzmodule laden muss?
Wenn die Seite, deren Inhalt du haben möchtest nicht dir gehört bzw. wenn du den Inhalt nicht verwenden darfst, Finger weg aber sofort!
Die abgefragte url ist eine html-Seite, schön wäre also wenn die Abfrage als string vorliegt, allerdings habe ich auch kein Problem damit, wenn quasi ein screenshot erstellt wird, sprich aus dem stream nur ein image gemacht werden könnte.
Wenns für dich kein Problem ist, dass die Seite als Screenshot vorliegt, nehme ich an, dass du die Informationen auf der Seite nicht parsen und filtern willst, sondern einfach nur "kopieren".
Wenn du das nicht darfst aber trotzdem machst, dann darfst zahlen.
Falls nun doch berechtigt sein solltest, dann wäre file_get_contents() die erste Wahl. Die Zweite wäre dann fopen() (ja hier brauchst du 2 Parameter, nämlich zusätzlich den Port). Wie dies zu bewerkstelligen ist findest du auf den entsprechenden Manualseiten unter http://at.php.net/.
vielen Dank auch dir für deine Antwort,
file_get_contents liefert bei mir den Fehler, dass nur zwei Parameter erlaubt sind und akzeptiert nicht die drei im Handbuch angegebenen: http://de.php.net/manual/de/function.file-get-contents.php
bye trunx
Hello,
vielen Dank auch dir für deine Antwort,
file_get_contents liefert bei mir den Fehler, dass nur zwei Parameter erlaubt sind und akzeptiert nicht die drei im Handbuch angegebenen: http://de.php.net/manual/de/function.file-get-contents.php
Wo liegt Dein Account?
Wie ist die Endung Deiner Dateien?
1&1 wickelt z.B. über die Endungen "php" und "php5" die Auswahl der Version ab.
Andere könnten das genauso handhaben...
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Hi,
Wo liegt Dein Account?
Wie ist die Endung Deiner Dateien?
1&1 wickelt z.B. über die Endungen "php" und "php5" die Auswahl der Version ab.
Andere könnten das genauso handhaben...
das war die Lösung, danke :-)
bye trunx
Hallo,
ich möchte gern mit php auf eine url zugreifen, also etwas in der Art
fopen("http://www.example.org");
file_get_contents("http://www.example.org");
http_request(...);
alle meine bisherigen Versuche scheiterten, ich bekomme z.B. als Fehlermeldung "bad http-Request" oder das die Parameter falsch sind (angeblich sind für fopen nur 2 erlaubt?) oder das die Funktionen unbekannt sind etc.
Hat jemand von euch eine Idee, wie dies am einfachsten zu bewerkstelligen ist, ohne dass man jetzt groß in der php.ini was ändern oder irgendwelche Zusatzmodule laden muss?
Kommt drauf an, welche PHP-Version bei dir läuft und was dein Webhoster erlaubt. Die Funktion file_get_contents() wäre schon goldrichtig und sehr einfach in der Anwendung. Es kann aber sein, dass dein Hoster den Dateizugriff auf Ressourcen außerhalb des eigenen Servers verbietet. In diesem Fall bleibt dir nichts anderes übrig, als mit fsockopen() selbst eine Verbindung zum Fremdserver aufzubauen und selbst HTTP mit ihm zu "sprechen". Jeena Paradies hat sich aber vor einiger Zeit schon mal die Mühe gemacht und sein Script zur Verfügung gestellt.
Die abgefragte url ist eine html-Seite, schön wäre also wenn die Abfrage als string vorliegt, ...
Als was sonst?? Du rufst doch eine HTML-Ressource ab. Was sonst als ein String könnte hier in Frage kommen?
allerdings habe ich auch kein Problem damit, wenn quasi ein screenshot erstellt wird, sprich aus dem stream nur ein image gemacht werden könnte.
Dir scheint die Technik hinter diesem Vorgang nicht ganz klar zu sein.
So long,
Martin
Hi,
vielen Dank für deine Antwort und auch für den Link zu dem script - leider funktioniert auch das nicht, ich bekomme hier ebenfalls als Antwort "Bad Request"
hmm, irgendwie scheint mein Provider alle Fremdaufrufe zu blocken...
bye trunx
echo $begrüßung;
ich möchte gern mit php auf eine url zugreifen, also etwas in der Art
fopen("http://www.example.org");
file_get_contents("http://www.example.org");
http_request(...);
alle meine bisherigen Versuche scheiterten, ich bekomme z.B. als Fehlermeldung "bad http-Request"
oder das die Parameter falsch sind (angeblich sind für fopen nur 2 erlaubt?) oder das die Funktionen unbekannt sind etc.
Funktioniert der Zugriff generell? Hast du das mal mit einer 0815-URL (z.B. Google) probiert? Wenn das geht und deine gewünschte URL nicht, sie aber im Browser aufrufbar ist, dann mag vermutlich der Server den minimalen HTTP-Request nicht, den PHP lossendet.
Hat jemand von euch eine Idee, wie dies am einfachsten zu bewerkstelligen ist, ohne dass man jetzt groß in der php.ini was ändern oder irgendwelche Zusatzmodule laden muss?
Manchmal ist der Zielserver schon mit einer User-Agent-Zeile im Request zufrieden. Dessen Mitsenden lässt sich mit der PHP-Direktive user_agent veranlassen. Wenn das nicht richt, musst du herausfinden, welche Headerzeilen im Request fehlen und kannst mit Socket Context Options den Request erweitern.
echo "$verabschiedung $name";
Hi,
Manchmal ist der Zielserver schon mit einer User-Agent-Zeile im Request zufrieden. Dessen Mitsenden lässt sich mit der PHP-Direktive user_agent veranlassen. Wenn das nicht richt, musst du herausfinden, welche Headerzeilen im Request fehlen und kannst mit Socket Context Options den Request erweitern.
mit dieser Funktion habe ich es auch versucht, man übergibt ja dann z.B. den context als dritten Parameter in file_get_contents, doch leider kommt folgende Fehlermeldung: "Warning: file_get_contents() expects at most 2 parameters, 3 given in /var/www/web144/html/buero-ix/ruthe/top_test.php on line 13"
der zugehörige Scriptteil ist:
$filename = "http://www.example.org";
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept-language: en\r\n"
) );
$context = stream_context_create($opts);
$contents = file_get_contents($filename, false, $context);
echo $contents;
bye trunx
echo $begrüßung;
[...] kannst mit Socket Context Options den Request erweitern.
mit dieser Funktion habe ich es auch versucht, man übergibt ja dann z.B. den context als dritten Parameter in file_get_contents, doch leider kommt folgende Fehlermeldung: "Warning: file_get_contents() expects at most 2 parameters, 3 given in /var/www/web144/html/buero-ix/ruthe/top_test.php on line 13"
Dann hast du vermutlich noch die veraltete PHP-Version 4. Laut Handbuch soll die Context-Geschichte ab 5.0.0 gehen. Dir bleibt dann wohl nur übrig, den Request selbst mit fsockopen() abzuhandeln.
echo "$verabschiedung $name";