Ob der FTP server online oder offline ist anzeigen.

Ja ist ja logisch, dass fsockopen einen Fehler liefert, weil der Server ja offline ist. Und genau deshalb prüfst du ja im nächsten Schritt auch, ob die Funktion nicht evtl. False zurückgegeben hat.

Damit nun der schöne Fehler weggeht, musst du einfach die Fehlerausgabe mit einem @ vorm fsockopen, also @fsockopen( .... ), unterdrücken. Sollte aber eigentlich hinlänglich aus diversen Einsteigerdokumenten bekanntsein :rolleyes:
 
danke ich habe mien problem selber gelöst!

also vor das fsockopen muss ein @ also so
PHP:
//editiert von Tim Comanns:
//du musst das @ schon hinschreiben *g*
$fp = @fsockopen ("sandman03.kicks-ass.net", 21, $errno, $errstr, 30);
 
Noch eine kleine Anmerkung:

Binde dieses Prüfscript lieber als Grafik in deine Page ein. Sonst dauert die Page, in der der Status steht immer ca. 30 Sekunden (bis zum fsockopen-Timeout)

Mach also:
<img src="ftpstatus.php" alt="Bootleg-Server-Status">

Das Script musst du dann nur noch etwas anpassen:

PHP:
<?php
Header("Content-type: image/jpeg");
$fp = fsockopen ("sandman03.kicks-ass.net", 21, $errno, $errstr, 30);
if (!$fp) {
 readfile("offline.jpg");
} else {
 readfile("online.jpg");
 fclose($fp);
}
?>

Dann wird die Grafik nur nachgeladen und der Rest der Seite ist in der gewohnten Geschwindigkeit da...
 
Ich hab da grad ein script geschrieben:

PHP:
$fsock = @fsockopen($_GET['server'], 80, $errno, $errstr, 30);

     $image = imagecreate(42,13);
     $color_bg = imagecolorallocate($image,2,2,2);
     $color_text = imagecolorallocate($image,0,0,0);
     imagecolortransparent($image,$color_bg);

     //WENN DER SERVER online ist dann wird ONLINE gezeigt, sonst offline
     if($fsock){
         $text = "ONLINE";
         fclose($fsock);
     }
     else $text = "OFFLINE";

     imagestring($image,2,0,0,$text,$color_text);

     header("Content-type: image/png");

     imagepng($image);

ich hoffe du kannst damit was anfangen! Die Serveradresse musst du in der Browserzeile mit ?server=deinserver.de angeben!
 
thema is zwar schon älter aber genau danach habe ich gesucht. is es möglich den coden:

PHP:
$fsock = @fsockopen($_GET['server'], 80, $errno, $errstr, 30);

     $image = imagecreate(42,13);
     $color_bg = imagecolorallocate($image,2,2,2);
     $color_text = imagecolorallocate($image,0,0,0);
     imagecolortransparent($image,$color_bg);

     //WENN DER SERVER online ist dann wird ONLINE gezeigt, sonst offline
     if($fsock){
         $text = "ONLINE";
         fclose($fsock);
     }
     else $text = "OFFLINE";

     imagestring($image,2,0,0,$text,$color_text);

     header("Content-type: image/png");

     imagepng($image);

so umzubauen das er anstatt Online/Offline anzeigt ein bild, sprich on.gif/off.gif?
und wie kann ich das machen das man per prowser ein befehl eingibt z.b. ?server=127.0.0.1:14567 das er dann dies testet MIT den angegebenen port?
währe echt nett wenn mir jemand helfen kann, da ich finde das dies eine gute Gameserver abfrage ist die dann auch net zu aufdringlich auf eine website rüber kommt

thx schon mal im vorraus

gruss
 
Hallo!

Ich würde ja lieber mit statischen Bildern arbeiten.
Dann kannst Du es an jeder beliebigen Stelle deiner Seite einbinden, ohne Angst haben zu müssen mit header() Probleme zu bekommen.

PHP:
<?php
if(isset($_GET['server']) AND isset($_GET['port'])) {
     if(!empty($_GET['server']) AND !empty($_GET['port'])) {
          $fp = @fsockopen($_GET['server'],$_GET['port'],&$errno,&$errstr,2);
          if(!$fp) {
               echo '<img src="offline.gif" alt="Server ist offline!">';
          } else {
               echo '<img src="online.gif" alt="Server ist online!">';
          }
     } else {
          if(empty($_GET['server']) OR !isset($_GET['server'])) {
               echo "Sie haben keinen Server angegeben!<br>";
          }
          if(empty($_GET['port']) OR !isset($_GET['port'])) {
               echo "Sie haben keinen Port angegeben!<br>";
          }
     }
}
?>
Aufgerufen wird es dann z.b. mit http://www.domain.de/scriptname.php?server=tutorials.de&port=80 bzw. mit http://www.domain.de/scriptname.php?server=193.28.88.250&port=80.
Enthält "server" und/oder "port" keinen Wert, wird der Hinweistext ausgegeben.
Wird die Angabe von "server" oder "port" komplett weggelassen (also z.b. scriptname.php?server=tutorials.de bzw. scriptname.php?port=80), wird ebenfalls der Hinweistext ausgegeben.
Wird nur scriptname.php aufgerufen, dann wird garnichts ausgegeben.

Wird sowohl der Server als auch der Port angegeben, wird dem entsprechend entweder offline.gif oder online.gif angezeigt.

Gruss Dr Dau
 
Zurück