Serverstatus

Haruzept

Mitglied
Hallo Zusammen,

ich habe ein kleines Problem mit meinem Serverstatus script.

PHP:
$ip = $datei[2];
$port = $datei[3];
$online = @fsockopen($ip, $port, $errno, $errstr, 1);
if($online >= 1) { 
    echo 'Serverstatus: <font color="#0F0">Online</font>'; 
}
else {
echo 'Serverstatus: <font color="#F00"><BLINK>Offline</BLINK></font>'; 
}

Dies funktioniert nicht. Wenn ich jedoch bei der Variable $ip und $port die Werte eintrage, kappt es. Meine Frage nun, warum funktioniert es nicht mit dem Array Wert?

Wenn ich die Array Elemente "datei[2]" mit print_r ausgebe, steht auch das, was ich haben möchte.
 
Zuletzt bearbeitet:
Hi,

versuch mal folgendes und schreib hier die Ausgabe:
PHP:
$ip = $datei[2];
$port = $datei[3];

var_dump($datei);
var_dump($ip);
var_dump($port);

Grüße,
BK
 
array(4) { [0]=> string(18) "BLA " [1]=> string(2) "1 " [2]=> string(13) "IP " [3]=> string(5) "PORT" } string(13) "IP " string(5) "PORT"

ich vermute mal, es liegt an dem leerzeichen am Ende :)

Wäre es so richtig?

PHP:
$ip = substr("$datei[2]" , 0, -1);
 
Hi,
wenn du nur die Leerzeichen eleminieren willst klappt es auch so
PHP:
$ip = trim($datei[2]);

btw. darf das
PHP:
$datei[2]
nicht innerhalb von Anführungszeichen stehen...
 
wie schreibst du die Daten denn in $datei?
So wie es nach dem var_dump() aussieht steh in $datei[2] nur "IP ".

Der Fehler scheint also viel früher im Script zu sein.
 
Ok,
hab mir mal auf php.net die funtion angeschaut, beim Port wird ein Integer erwartet, probier mal das:

PHP:
$ip = trim($datei[2]);
$port = (int)trim($datei[3]);

$online = @fsockopen($ip, $port, $errno, $errstr, 1);

if($online >= 1) { 
    echo 'Serverstatus: <font color="#0F0">Online</font>'; 
}
else {
    echo 'Serverstatus: <font color="#F00"><BLINK>Offline</BLINK></font>'; 
}
 
Zurück