1. Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

PHP - Minecraft Server Query

Dieses Thema im Forum "Webentwicklung" wurde erstellt von MrPyro13, 27. Juli 2015.

  1. MrPyro13
    Offline

    MrPyro13

    Registriert seit:
    29. April 2013
    Beiträge:
    828
    Minecraft:
    MrPyro13
    Hallo Community,

    ich möchte eine PHP Funktion schreiben, die mir den Serverstatus mit den dazugehörigen Spielern angibt.
    Dazu habe ich folgendes PHP-Skript zusammenrrecherchiert:

    PHP:
    1. <?PHP
    2.     $fp = fsockopen('5.189.137.168', 25565, $errno, $errstr, 4) or die('<div id="server_offline">OFFLINE</div>');
    3.    
    4.     fwrite($fp, "\xFE");
    5.     $answer = fread($fp, 256);
    6.     if ($answer[0] != "\xFF") { die ('Anfrage fehlgeschlagen!'); }
    7.    
    8.     $text = substr($answer, 3);
    9.     $text = mb_convert_encoding($text, 'auto', 'UCS-2');
    10.     $parts = explode("\xA7", $text);
    11.    
    12.     echo '<div id="server_online">ONLINE</div>';
    13.     echo 'Es sind ' . $parts[1] . ' von ' . $parts[2] . ' Spielern online';
    14. ?>
    Wenn der Server online ist, dann läuft alles, ist er jedoch offline bekomme ich eine Fehlermeldung:

    Code (Text):
    1. PHP warning in file /var/www/html/forum/wcf/lib/data/dashboard/custom/scripts/DashboardCustomBox-33.class.php (2): fsockopen(): unable to connect to 5.189.137.168:25565 (Connection refused)

    Bin über jede Hilfe dankbar ;)

    PS: Ich bin ein absoluter Noob in Sachen PHP, deshalb einfach erklären ;)
     
    #1
  2. Werbung
    Online

    Werbung

  3. ShareLock
    Offline

    ShareLock

    Registriert seit:
    2. November 2011
    Beiträge:
    70
    Es gibt in php den @ operator. dieser unterdrückt Fehler und Warnungen, sodass du dann besser drauf reagieren kannst. *

    PHP:
    1. <?PHP
    2.     $fp = @fsockopen('5.189.137.168', 25565, $errno, $errstr, 4)
    3. if(is_resource($fp)) {echo 'Server Offline';  exit }
    4.  
    * Das ist so nicht korrekt, aber das ist nah an der Wahrheit.

    Edit: hier sollte natürlich kein or die nach @fsockopen kommen, oder aber man entfernt die if abfrage. Sollte persönliche Präferenz sein.
     
    #2
    • Gefällt mir Gefällt mir x 1
  4. MrPyro13
    Offline

    MrPyro13

    Registriert seit:
    29. April 2013
    Beiträge:
    828
    Minecraft:
    MrPyro13
    Bricht das die nicht den Code ab? Somit wird doch dann die if-Abfrage nicht mehr ausgeführt, oder?
     
    #3
    • Gefällt mir Gefällt mir x 1
  5. MrPyro13
    Offline

    MrPyro13

    Registriert seit:
    29. April 2013
    Beiträge:
    828
    Minecraft:
    MrPyro13
    Hab nun ein Skript geschrieben, das funktioniert:

    PHP:
    1. <?PHP
    2.     try {
    3.         error_reporting(E_ERROR | E_PARSE | E_NOTICE);
    4.         $fp = fsockopen('localhost', 25565, $errno, $errstr, 4);
    5.      
    6.         fwrite($fp, "\xFE");
    7.         $answer = fread($fp, 256);
    8.         if ($answer[0] != "\xFF") {
    9.             echo '<div id="server_offline">OFFLINE</div>';
    10.             exit;
    11.         }
    12.  
    13.         $text = substr($answer, 3);
    14.         $text = mb_convert_encoding($text, 'auto', 'UCS-2');
    15.         $parts = explode("\xA7", $text);
    16.  
    17.         echo '<div id="server_online">ONLINE</div>';
    18.         echo 'Es sind ' . $parts[1] . ' von ' . $parts[2] . ' Spielern online';
    19.     } catch(Exception $e) {
    20.         echo '<div id="server_offline">OFFLINE</div>';
    21.     }
    22. ?>
     
    #4