Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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.

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.

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>

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

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 ...

}

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]

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

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.

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 von T-Offline

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

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]

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!

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.

So als Info!

Betriebsystem Windows 7 64Bit

Xampp

So jetzt mein verdacht das fsockopen bei xampp nicht geht!

Stimmt das?

MfG

T-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

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.

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

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.