textausgabe vom externen php-Script via url einlesen

Aser

Erfahrenes Mitglied
tag zam,
hab die Suchfunktion bereits genutzt und nix besseres als
readfile() und
fsockopen() gefunden
mit denen kann ich bedauerlicherweise nix anfangen

ich habe auf meinem Homeserver fogendes script, es soll checken, ob die letzte IP-Angabe noch aktuell ist.
Die IP wird aus der Textdatei genommen, und der Link http://musterIP/musterdateivorhanden.txt ausgefuehrt,
dies bedeutet, dass der eigene Homeserver noch online ueber den "offiziellen" Link erreichbar ist.
Falls musterdateivorhandne.txt nicht vorhanden ist, wird die Aktualisierungsschleife ausgefuehrt.

diese oeffnet den link
http//festedomain.com/refreshmeineip.php?zertifizierungspwd=xxx
wenn ich diesen Link normal mit dem Firefox ausfuehre, wird durch $REMOTE_ADDR die Homeserver-IP auf dem Echten Webserver aktualisiert und die User wissen automatisch den aktuellen Link. Das einzige, das refresh.php ausgibt, ist die eigene IP
echo $REMOTE_ADDR
diese "Ausgabe" soll nun das Homeserverscript im scriptverlauf einlesen koennen.
Wenn ich jetzt allerdings mit readfile() die url oeffne, wird diese auf dem Server nicht aktualiesiert, so wie es beim Firefox gekappt hat

Lange Rede, kurzer Sinn:
ich will eine Funktion, die eine fremde PHP-Seite(deren ausgefuehrte Version) einbindet und als "text" ausgibt

meine Versuche


webintrostartseite.php



PHP:
$eigeneserverip=implode('\n',file("./eigeneserverip.txt"));
$dateiausgabe=readfile("http://".$eigeneserverip."/dieseseiteistvorhanden.txt"); 


if($dateiausgabe!='')
{
echo "VORHANDEN";	
}
else
{
echo "NIX-VORHANDEN";

$eigeneserverip=readfile("http://www.musterdomain.com/refresh.php?pwd=12345");



$fp=fopen("./eigeneserverip.txt","w");
fwrite ($fp, $eigeneserverip);
fclose($fp);

echo "neue Serverip xxx $eigeneserverip xxx sollte gespeichert worden sein";

}


refresh.php


PHP:
$timestamp=time();

if($pwd=="xxx")
{
$fp=fopen("./serverip.txt","w");
fwrite ($fp, $REMOTE_ADDR);
fclose($fp);
echo $REMOTE_ADDR; #neue serverip, damits auch der server checkt
}
else
{
echo"falsches pwd";
}

vielen Dank im Voraus
 
Zuletzt bearbeitet:
also ich habe jetzt

PHP:
$eigeneserverip=fsockopen ("www.webserver.com/refresh.php?pwd=12345", 80, $errno, $errstr, 30);
(...zugegeben, $errno und $errstr sind mir unbekannt, kommen aber im php.net-Beispiel vor...ich stell mir hier auch die Frage wozu ich einen Port fuer nen Webserver benoetige...)

und der erfuellt allerdings nicht seinen Zweck
Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Der angegebene Host ist unbekannt. in D:\homeserver\webintrostartseite.php on line 17

Warning: fsockopen() [function.fsockopen]: unable to connect to http://www.webdomain.com/refresh.php?pwd=12345:80 (Unknown error) in D:\homeserver\webintrostartseite.php on line 17
xxx ausgeleseneserverip vom server: fragezeichen
Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Der angegebene Host ist unbekannt. in D:\homeserver\webintrostartseite.php on line 43


edited:
; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
allow_url_fopen = On
 
Zuletzt bearbeitet:
also, ich habs mit fsockopen nicht geschafft...
es allerdings ueber nen umweg hinbekommen
PHP:
  $timeout = 33;
  $old = ini_set('default_socket_timeout', $timeout);
  $file = fopen('http://xxx.de/xxx/refresh.php?pwd=12345', 'r');
  ini_set('default_socket_timeout', $old);
  stream_set_timeout($file, $timeout);
  stream_set_blocking($file, 0);
 # //the rest is standard
$eigeneserverip=$file; # hier kommt staendig: "Resource id #4" raus
                                # daher speicher das server-script nun eine serverip.txt
                                # diese serverip.txt kann ich allerdings wieder einlesen,
                                # wobei ich mich frage warum $eigeneserverip nicht beriets jetzt
                                # der richtige Wert ist
$eigeneserverip=implode ('', file ('http://xxx.de/xxx/serverip.txt'));
 
Das Problem dabei ist nur, dass das Script durchaus nicht mehr funktionieren koennte wenn Du mal den Server wechselst.
Dementsprechend waere halt fsockopen() die bessere Variante.
Das Problem was Du da hast ist dass Du gleich den ganzen URL eingibst. Du darfst dort lediglich den Hostnamen angeben und musst dann per HTTP die Daten anfragen.
Zur Frage warum Du einen Port angeben musst: fsockopen() weiss nicht, dass Du mit einem Webserver verbinden willst. Du kannst es genauso gut auch nutzen um mit einem beliebigen anderen Port zu verbinden. So nutzen meine 3 Klassen (fuer HTTP, FTP und SMTP) alle fsockopen() um mit dem Server zu verbinden.
Am besten schaust Du Dir mal das Tutorial zu meiner HTTP-Klasse an, anhand dessen solltest Du dann auch den richtigen Code zum Abholen der erwuenschten Daten zusammenstricken koennen. Oder Du nimmst gleich meine Klasse um dies zu erledigen.
 
Zurück