Server Status Script ????

  • Thread starter Thread starter Deleted member 15595
  • Start date Start date
D

Deleted member 15595

Guest
moin moin meine Lieben !

Ich habe mir ein Online Status Script Erstellt


PHP:
<?php
echo '<center>Root Server</center>';
echo "";
echo "<center>Mit der IP: 85.25.195.241</center>";
echo "";
echo "<center>ist ...</center>";
$ip = "85.25.195.241";
$port = "xxxx";
$timeout = "10";
if ($ip and $port and $timeout)
{
$rootserver = @fsockopen("$ip", $port, $timeout);
}
if($rootserver)
{
echo "<center>Online</center>";
}
else
{
echo "<center>OFFLINE</center>";
}
echo "";
echo "<center>---------------------------------------------------------------------------------</center>";
?>


Geht soweit alles .


Aber wenn ich .....


Code:
echo "<center>Online</center>";

in ....

Code:
echo "<center><img src="img/serveron.png" /></center>";


ändere , bekomme ich eine Fehler Meldung ??


Code:
​Parse error: syntax error, unexpected 'img' (T_STRING), expecting ',' or ';' in /kunden/389995_28108/webseite/ice/status.php on line 20


weiß einer, wo ich ein fehler habe.....


habe schon google ..... aber nicht wirklich eine info .


Danke in Voraus .

LG ice76
 
Das Anführungszeichen (also " ) wird bereits verwendet um die Zeichenkette zu beginnen / beenden. Durch das >> img src="..." << beendest du die Zeichenkette hinter der Zeichenfolge 'src'.

Hier gibt es 2 Lösungen:
a) Aussen rum die einfachen Anführungszeichen verwenden (hier kein unterschied)
Code:
echo '<center><img src="img/serveron.png" /></center>';

b) PHP erklären dass die Anführungszeiche in der Mitte in die Ausgabe gehören, das 'Escapen' mittels Backslash
Code:
echo "<center><img src=\"img/serveron.png\" /></center>";
 
Hi,

du schließt mit deinem zweiten " (hinter src=) deine Textkette, hiernach erwartet PHP entweder ein Ende der Anweisung oder eine Verkettung.

Ändere den ersten und letzten " in '
PHP:
echo '<center><img src="img/serveron.png" /></center>';
 
Kleine Anregung, wie sowas aussehen könnte:
PHP:
<?php

$ip = "85.25.195.241";
$port = "xxxx";
$timeout = "10";

$online = @fsockopen($ip, $port, $timeout);

$template = <<<EOT
<div style="text-align:center;width:250px;margin:auto;">
  <p>
    Root Server<br />
    mit der IP: %s
  </p>
  <p>
    ist %s
  </p>
  <hr />
</div>
EOT;

echo sprintf(
  $template,
  $ip,
  ($online)?"online":"OFFLINE"
);

  • Indentation!!! (Einrückung)
  • Was passiert in deinem Snippet, wenn die Prüfung der Parameter um fsockopen unwahr ist? In deinem Beispiel ist sie das übrigens nie, weshalb man sie auch wegkürzen kann.
  • echo von leeren Strings ist quark (echo "" gibt genau gar nichts aus)
  • <center>-Tags und Minus-Zeichen als Linie sind total 20.Jhd
  • Output sollte immer nach der Aktion kommen. Dann behält man es sich offen, was komplett anderes auszugeben (z.B. eine Fehlermeldung oder einen Redirect auf einen anderen URL, der nach dem ersten Byte Output nicht mehr möglich ist.)
 
Last edited by a moderator:
Wenn wir schon am kritisieren sind, so würde ich die Status-Seite selber reines HTML machen und das PHP-Skript ein entsprechedes Bild (bspw über HTTP-Code 302) ausliefern lassen.
Dadurch lädt die Seite selber unabhängig von der Erreichbarkeit des Servers immer schnell, nur das Bild lädt langsam.
Tricksen kann man hier weiter indem man mit CSS die Farbe grau als Hintergrundfarbe definiert, so dass man einen "Lade..." Zustand symbolisiert.
 
Wenn wir schon am kritisieren sind, so würde ich die Status-Seite selber reines HTML machen und das PHP-Skript ein entsprechedes Bild (bspw über HTTP-Code 302) ausliefern lassen.
Dadurch lädt die Seite selber unabhängig von der Erreichbarkeit des Servers immer schnell, nur das Bild lädt langsam.
Tricksen kann man hier weiter indem man mit CSS die Farbe grau als Hintergrundfarbe definiert, so dass man einen "Lade..." Zustand symbolisiert.


JA ich Danke dir, er sollte erstmal gehen .... jetzt werde ich die datei anpassen ...
 
Beachte dass das verlinkte Produkt für serverseitige App-Server (Node) und nicht "normale" Browser ist!
Du brauchst also nicht nur einen Webspace dafür sondern generell mindestens Shell-Zugriff.
 
Back
Top