Veröffentlicht 13. April 201015 j Was mach ich falsch? <html> <head> <title>Server-Status</title> </head> <body> <table border="1"> <?php $fp = @fsockopen("10.71.6.15",80,&$errno,&$errstr,2); #if(!$fp) { echo <tr><td width="100">Server 1 ist</td><td width="100"><font color="red">offline</font></td></tr>; } else { echo <tr><td width="100">Server 1 ist</td><td width="100"><font color="green">online</font></td></tr>; } ?> </table> </body> </html> ############ Frage ############# Warum werden 2 Zeilen (Einmal Online ... Offline) angezeigt, das sollte eingendlich in einer zeile stehen? und warum kommen oben die fehler..... Ich versteh das nicht wo liegt der Fehler? Mit freundlichen Grüßen T-Offline
13. April 201015 j versuch mal das # vor dem if zu entfernen. Das # letet einen einzeiligen Kommentar ein, und deshalb findet keine Fall unterscheidung stat. Und bitte, bitte lass das mit den gemischten html und php.
13. April 201015 j sieht es so aus? ; } else { echo ; } ?> Server 1 ist offline Server 1 ist online erstens: deine "echo" sind falsch, echo 'text'; nicht echo text; zweitens: du hast das if auskommentiert, was wohl albern ist.
13. April 201015 j OK das mit dem auskommentieren ist schon blöd gelaufen.... Ich stell mich jetzt mal ganz blöd aber warum willste das so schreiben? Oder steh ich gerade voll auf dem schlauch ... Danke für die Hilfe! <html> <head> <title>Server-Status</title> </head> <body> <table border="1"> <?php $fp = @fsockopen("127.0.0.1",80,&$errno,&$errstr,2); if(!$fp) { [B]echo '<tr><td width="100">Server 1 ist</td><td width="100"><font color="red">offline</font></td></tr>';[/B]} else { [B]echo '<tr><td width="100">Server 1 ist</td><td width="100"><font color="green">online</font></td></tr>';[/B] } ?> </table> </body> </html>
13. April 201015 j weil es sonst für php kein string is den er ausgibt. schreibst du das nämlich als extra php wirft der php-parser mit fehlermeldungen um sich.
19. April 201015 j Ok da mir das zu Blöd wurde und ihr auch kein html und php gemischt haben wollt habe ich mir mal ein PhP Script zusammen gebaut. <?php $info["address"]="127.0.0.1"; $info["port"]="80"; $timeout = 2; $filetyp="gif"; $pic_online="online.gif"; $pic_offline="offline.gif"; $fp = @fsockopen ($info["address"], $info["port"], $errno, $errstr, $timeout); if($filetyp=="gif") { header("Content-Type: image/gif"); if ($fp) { $img=imagecreatefromgif($pic_online); imagegif($img,'',0); }else{ $img=imagecreatefromgif($pic_offline); imagegif($img,'',0); } } imagepng($img,'serverstatus.png',0); imagedestroy($img); ?>[/PHP] Nun mal eine Frage wie kann ich auf der Selben seite z.b. die ip 127.0.0.2 127.0.0.3 und so weiter auch noch abfragen? Geht das überhaupt? Mit freundlichen Grüßen T-Offline
19. April 201015 j ohne den code jetzt genauer anzusehen, sieht das doch schon viel besser aus. und so weiter auch noch abfragen? Geht das überhaupt? Mit freundlichen Grüßen T-Offline sicher geht das, dazu machst du aus dem $info array ein zweidimensionales array nach der art: $info = array(); $info[0] = array('address' => '127.0.0.1', 'port' => 80); $info[1] = array('address' => '127.0.0.2', 'port' => 80); $info[2] = array('address' => '127.0.0.3', 'port' => 80); und packst die prüfung und ausgabe in eine schleife. foreach ($info as $key => $aInfo) { $fp = @fsockopen($aInfo["address"], $aInfo["port"], $errno, $errstr, $timeout); ... hier dann die ausgabe ... }
19. April 201015 j Ok langsam verstehe ich das ganze. So nun noch eins ich will zu jeder ip ein anderes Bild hinterlegen. Aso ist der code so richtig _n4p_? <?php $info = array(); $info[0] = array ('address' => '127.0.0.1', 'port' => 80); $info[1] = array ('address' => '127.0.0.2', 'port' => 80); $info[2] = array ('address' => '127.0.0.3', 'port' => 80); $info[3] = array ('address' => '127.0.0.4', 'port' => 80); $timeout = 2; $filetyp="gif"; $pic_online="online.gif"; $pic_offline="offline.gif"; forreach ($info as &key => $aInfo) { $fp = @fsockopen ($aInfo["address"], $aInfo["port"], $errno, $errstr, $timeout); if($filetyp=="gif") header("Content-Type: image/gif"); if ($fp) { $img=imagecreatefromgif($pic_online); imagegif($img,'',0); } else { $img=imagecreatefromgif($pic_offline); imagegif($img,'',0); } } imagepng($img,'serverstatus.png',0); imagedestroy($img); ?>[/PHP]
19. April 201015 j OK hab 2 Fehler drin gefunden 1 und 2 = forreach ($info as &key => $aInfo) Ein "r" und beim 2ten kein "&" zeichen sondern ein "$" jetzt fehlen nur noch die bilder! MfG Toffline
19. April 201015 j dazu würde ich einfach das $info array erweitern, und zwar halt im die information welches bild gewünscht ist. hier bietet sich auch an die bild namen an das programm anzupassen. zb: on_server1.gif, off_server1.gif dann kann ins info array folgendes: $info[1] = array ('address' => '127.0.0.2', 'port' => 80, 'picture' => 'server2'); und in der ausgabe einfach if ($fp) { $img=imagecreatefromgif('on_'.$aInfo['picture'].'.gif'); imagegif($img,'',0); } else { $img=imagecreatefromgif('on_'.$aInfo['picture'].'.gif'); imagegif($img,'',0); } hast du den code mal getestet? so beim ansehen zweifel ich das das funktioniert. 1) sendest du mehrere header, was üblicherweise mit warnungen quittiert wird 2) versuchst du mehrere bilder gleichzeitig zu erstellen. ich würde empfehlen, die seite in php zu generieren, am liebsten mit einfachen templates. da du die bilder eh nicht zur laufzeit änderst, solltest du auch auf das imagecreate zeugs verzichten.
19. April 201015 j OK zu 50% deiner antwort versteht ich nur Bahnhof.... Bin nicht so der Programmier. Wäre nett wenn du mir das ggf. erklären würdest. Hier der Aktuelle code: <?php $info = array(); $info[0] = array ('address' => '127.0.0.1', 'port' => 80, 'picture' => 'server0'); $info[1] = array ('address' => '127.0.0.2', 'port' => 80, 'picture' => 'server1'); $info[2] = array ('address' => '127.0.0.3', 'port' => 80, 'picture' => 'server2'); $info[3] = array ('address' => '127.0.0.4', 'port' => 80, 'picture' => 'server3'); $info[4] = array ('address' => '127.0.0.5', 'port' => 80, 'picture' => 'server4'); $filetyp="gif"; $pic_online="on_server1.gif"; $pic_offline="off_server1.gif"; foreach ($info as $key => $aInfo) { $fp = @fsockopen ($aInfo["address"], $aInfo["port"], $errno, $errstr, $timeout); if($filetyp=="gif") header("Content-Type: image/gif"); if ($fp) { $img=imagecreatefromgif('on_'.$aInfo['picture'].'.gif'); imagegif($img,'',0); } else { $img=imagecreatefromgif('off_'.$aInfo['picture'].'.gif'); imagegif($img,'',0); } } imagepng($img,'serverstatus.png',0); imagedestroy($img);[/PHP] Wie würdest du das machen? Bin ich wenn schon auf dem Richtigen weg oder bin ich Hoffnugslos? Vielen Danke für deiner Schnelle und Nette Hilfe MfG T-Offline Bearbeitet 19. April 201015 j von T-Offline
19. April 201015 j was prinzipielles zu Templates: Erstellung einer auf PHP und Templates basierenden Webseite danach wirst du verstehen was ich meinte ^^
19. April 201015 j So würde es gehen nur es kommen einfach keine Bilder was macht ich denn Falsch? Danke für denn link aber ich muss das bis ende der Woche geschafft haben und jetzt noch die ganze seite druch lesen Ufff.. Was ich gelesen habe das Gif seid 1.6 nicht mehr drin ist in der GD deswegen habe ich nun jpeg genommen. Könntest du noch mal drüber schauen wäre wirklich nett! <?php $info = array(); $info[0] = array ('address' => 'ip', 'port' => 80, 'picture' => 'server0'); $info[1] = array ('address' => 'ip', 'port' => 80, 'picture' => 'server1'); $info[2] = array ('address' => 'ip', 'port' => 80, 'picture' => 'server2'); $info[3] = array ('address' => 'ip', 'port' => 80, 'picture' => 'server3'); $info[4] = array ('address' => 'ip', 'port' => 80, 'picture' => 'server4'); $info[5] = array ('address' => 'ip', 'port' => 80, 'picture' => 'server5'); $timeout = 2; $filetyp="gif"; foreach ($info as $key => $aInfo) { $fp = "1"; // $fp = @fsockopen ($aInfo["address"], $aInfo["port"], $aInfo["picture"], $errno, $errstr, $timeout); echo $fp . 'hallo' . $img . '<br>' . "\n"; if ($fp) { $img = imagejpeg ( 'server0', 'off_server0.jpeg', 100 ); // $img=("'off_'.$aInfo["picture"].'.gif'"); // imagegif($img,'',0); } else { $img=('on_'.$aInfo['picture'].'.gif'); imagegif($img,'',0); } } imagepng($img,'serverstatus.png',0); imagedestroy($img); ?>[/PHP] MfG T-Offline
19. April 201015 j das mit dem imagejpeg/imagegif usw wird so nix. das kann man nehmen wenn php EIN bild generieren soll, aber du versuchst mehrere zu generieren. schnelles einfaches beispiel: if ($fp) { echo '<img src="on_'.$aInfo['picture'].'.gif" alt="online" />'; } else { echo '<img src="off_'.$aInfo['picture'].'.gif" alt="offline" />'; } [/PHP]
23. April 201015 j Jetzt ist folgendes Problem! Er zeigt die Server immer als Offline an. Es kommt mir so vor als würde er die regel überspringen. <?php $info = array(); $info[0] = array ('address' => 'ip', 'port' => 80, 'picture' => 'server0'); $info[1] = array ('address' => 'ip', 'port' => 80, 'picture' => 'server1'); $info[2] = array ('address' => 'ip', 'port' => 80, 'picture' => 'server2'); $info[3] = array ('address' => 'ip', 'port' => 80, 'picture' => 'server3'); $info[4] = array ('address' => 'ip', 'port' => 80, 'picture' => 'server4'); $info[5] = array ('address' => 'ip', 'port' => 80, 'picture' => 'server5'); $timeout = 10; $filetyp="gif"; foreach ($info as $key => $aInfo) { $fp = "1"; $fp = @fsockopen ($aInfo["address"], $aInfo["port"], $aInfo["picture"], $errno, $errstr, $timeout); echo $fp . $img . '<br>' . "\n"; if ($fp) { echo '<img src="on_'.$aInfo['picture'].'.gif" alt="online" />'; } else { echo '<img src="off_'.$aInfo['picture'].'.gif" alt="offline" />'; } } ?>[/PHP] Hmm weiß einer noch ne Rat dreh bald durch wegen so einer ******* anzeige!
23. April 201015 j naja, das kommt nun drauf an ^^ hast du das lokal? steht bei 'address' auch die richtige ip? und das wichtigste, unterstützt das verwendete php auch fsockopen? phpinfo() hilft, oder einfach mal das @ vor fsockopen weglassen, damit du eventuelle fehlermeldungen siehst.
23. April 201015 j So als Info! Betriebsystem Windows 7 64Bit Xampp So jetzt mein verdacht das fsockopen bei xampp nicht geht! Stimmt das? MfG T-Offline
23. April 201015 j keine ahnung, is ne config sache. also php.ini weiß nicht ob man es auch im htacess steuren kann.
25. April 201015 j Warning: fsockopen() expects at most 5 parameters, 6 given in /var/www/fsock.php on line 14 offline Warning: fsockopen() expects at most 5 parameters, 6 given in /var/www/fsock.php on line 14 offline Warning: fsockopen() expects at most 5 parameters, 6 given in /var/www/fsock.php on line 14 offline Warning: fsockopen() expects at most 5 parameters, 6 given in /var/www/fsock.php on line 14 offline Warning: fsockopen() expects at most 5 parameters, 6 given in /var/www/fsock.php on line 14 offline Warning: fsockopen() expects at most 5 parameters, 6 given in /var/www/fsock.php on line 14 offline Hilft das ?? ^^ lass einfach den $timeout weg am ende der parameterliste dann klappt das.
25. April 201015 j richtig, erstmal das timeout streichen. was hat dich bitte auf diese idee gebracht? einfach die tatsache das eins zuviel ist? ich geb zu mir ists auch erst jetzt aufgefallen, aber wenn dann solltest du das $aInfo["picture"] nicht an fsockopen übergeben, das hat damit nix zu tun .. also: $fp = @fsockopen ($aInfo["address"], $aInfo["port"], $errno, $errstr, $timeout); das timeout ist aber scho wichtig o.0
25. April 201015 j genau das und die Tatsache das ich keine Lust hatte auf PHP: fsockopen - Manual zu gehen um zu gucken was wo hinkommt. Bin ja schließlich keine Funktionsreferenz.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.