Dieses 404-Dokument, das du angezeigt bekommen haben müsstest (zumindest war das bei mir so, natürlich ohne die Grafiken!) lässt erst einmal darauf schliessen, dass die Datei serverip.txt nicht im DocumentRoot des icooc.com-Webservers liegt. Also quasi sowas wie "Datei nicht gefunden".
Warum das, obwohl die Datei auf dem Server liegt (habs mit Telnet und HTTP 1.0-Anfragen ausprobiert)?
Naja, Kontent benutzt anscheinend virtuelle Server mit einer IP, deshalb müssen wir dem Server noch explizit mitteilen, von welchem Server wir die Datei haben wollen (also aus welchem DocumentRoot ).
Dazu müssen wir innerhalb der Funktion HTTP 1.0 benutzen, was das ganze etwas aufbläht:
PHP-Code:
<?
function http_get($server, $file) {
$socket=fsockopen($server, 80);
if (!$socket)
return false;
// HTTP 1.0-Anfrage
fputs($socket, "GET /$file HTTP/1.0\r\nHost: $server\r\n\r\n");
// Rückgabewert empfangen und auswerten
$retcode=fgets($socket, 4096);
$ret = explode(" ", $retcode);
if ($ret[1] != "200") // != 200 bedeutet "Datei nicht gefunden" o.Ä.
return false;
// Header empfangen und auswerten
while(!feof($socket)) {
$header=fgets($socket, 4096);
if ($header == "\r\n") // Der Header endet mit eienr Leerzeile
break;
}
// Daten empfangen
$in="";
while(!feof($socket)) {
$in.=fgets($socket, 4096);
}
fclose($socket);
return $in;
}
$ip=http_get("www.icooc.com", "serverip.txt");
if ($ip === false)
echo "Fehler";
else
echo $ip;
?>
Das mit der file()-Funktion geht übrigens nur, wenn die fopen-Wrapper aktiviert sind, wenn du Glück hast, führt aber eventuell ein Aufruf von
ini_set("allow_url_fopen", "1");
zum Erfolg
Lesezeichen