Php Datei auslesen

RePta

Grünschnabel
Hi Leute!
Ich möchte den "Quelltext" einer externen Php Datei auslesen.
Ich nehme mal als bsp die Url : http://XXX/page/download.php?cat=main&id=200 .
Beim aufrufen der Datei wird ein Text ausgeben, an dem ich per Php ran möchte^^
Z.B.: " Bitte warten sie x Sekunden" .
Diesen Text hätte ich gerne in einer Variablen usw.
Nur der Interpreter gibt mir eine Fehlermeldung aus, die ich nicht recht verstehe:
PHP:
Warning: file_get_contents(http://XXX/page/download.php?cat=main&id=200) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /var/www/html/web144/html/wait/test.php on line 5
Hier mein Quellcode:
PHP:
<?php
error_reporting(E_ALL);
$context=array('http' => array ('header'=> 'Range: bytes=1024-', ),);
$xcontext = stream_context_create($context);
$str=file_get_contents("http://XXX/page/download.php?cat=main&id=200",FALSE,$xcontext);
echo nl2br(stripslashes(htmlspecialchars($str)));

?>

Für weitere Fragen steh ich bereit^^
Danke schoneinmal im voraus..
MfG
RePta
 
Also an den PHP-Code kommst Du nur wenn dieser auf dem anderen Server nicht interpretiert wird, ansonsten wirst Du ueber HTTP nur die Ausgabe des Scripts zu sehen kriegen.

Und warum verstehst Du die Fehlermeldung nicht?
HTTP/1.1 404 Not Found
sagt doch alles was Du wissen musst. An der Addresse ist offensichtlich was falsch.

Uebrigens sei zu Funktionen wie file(), fopen() und file_get_contents() noch gesagt, dass diese nur mit URLs umgehen koennen wenn allow_url_fopen=on ist, was meiner Meinung nach nicht allzu oft der Fall ist, und, auch meiner Meinung nach, nie der Fall sein sollte.
Dementsprechend koennte es Dir passieren dass das Script nicht mehr funktioniert wenn Du mal den Server wechselst.
 
Also ich will ja nur an den Quelltext dass das Script "Echoed",
sprich wie als würde man die Url im Browser öffnen,
und dann rechts klick>>Seitenquelltext anzeigen.
Im prinzip will ich ja nicht den Php quelltext, sondern nur das was Php den Browser das schickt...sprich diese Aussage" Bitte warten sie x minuten"
 
Das ist natuerlich ueber HTTP kein wirkliches Problem. Wie gesagt, die HTTP-Fehlermeldung deutet an, dass offensichtlich an der von Dir angebenen Addresse was falsch ist. Funktioniert diese Addresse wenn Du sie 1:1 in die Addresszeile des Browsers kopierst?
 
Ja tut sie.
Ich habe auch einfach mal download.php einegeben,also ohne Variablen zu übergeben.
Funktioniert auch nicht.
 
Das ist schon etwas merkwuerdig wenn die selbe Addresse im Browser funktioniert und ueber PHP nicht.
Probier mal das hier (Du musst natuerlich noch Deine Addressdaten eintragen):
PHP:
$conn=fsockopen('XXX',80) or die('Connection error');
fwrite($conn,"GET /page/download.php?cat=main&id=200\r\n");
$response='';
while (!feof($conn))
{
 $response.=fread($conn,128);
}
fclose($conn);
echo nl2br($response);
 
Also so siehts geändert aus:
PHP:
<?php
error_reporting(E_ALL);
$conn=fsockopen('http://www.XXX./page/download.php?cat=main&id=200',80) or die('Connection error');
fwrite($conn,"GET /page/download.php?cat=main&id=200\r\n");
$response='';
while (!feof($conn))
{
 $response.=fread($conn,128);
}
fclose($conn);
echo nl2br($response);

?>

Da kommt aber folgende Fehlermeldung:
PHP:
Warning: fsockopen() [function.fsockopen]: unable to connect to http://www.XXX./page/download.php?cat=main&id=200:80 (Unable to find the socket transport "http" - did you forget to enable it when you configured PHP?) in /var/www/html/web144/html/wait/test.php on line 3
Connection error
 
Was meinst Du warum ich bei fsockopen() nur XXX angegeben hab? Dort wird nur der Host angegeben, also nicht der komplette URL, und auch kein HTTP und nichts, denn fsockopen() baut einfach nur eine Verbindung mit dem angegebenen Port auf. Alles was danach kommt machst Du selbst, z.B. HTTP-Anfragen oder aber auch FTP oder SMTP und andere Protokolle.
 
hmm, jetzt spuckt er einen 404´er aus...
The requested URL /page/download.php was not found on this server.
 
Zuletzt bearbeitet:
Dann probier das mal:
PHP:
$conn=fsockopen('XXX',80) or die('Connection error'); 
fwrite($conn,"GET /page/download.php?cat=main&id=200 HTTP/1.1\r\nHost:XXX\r\nUser-Agent:Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.2 (like Gecko)\r\nConnection: close\r\n\r\n"); 
$response=''; 
while (!feof($conn)) 
{ 
 $response.=fread($conn,128); 
} 
fclose($conn); 
echo nl2br($response);
Dabei ist zu beachten, dass der Hostname auch nochmal in der Anfrage auftaucht, dort musst Du den also auch noch anpassen.
 
Zurück