« 1 2 3 »
Autor Zpráva
sitole
Profil
Ano jede mě php a php.ini? ale jo hlásí mě to error. Ale ted nic mam tam jen obrázek :)

nemůže být něco špatě nastavené?


status.php

<!DOCTYPE html>
<html>
  <head>
    <title>Online Status</title>
    <style type="text/css">
      #online_status {
        background: url("signa2.png");
        width: 550px;
        height: 150px;
      }
      #status_table {
        /*nějaký nastylování...*/
      }
    </style>
  </head>
  <body>
  <div id="online_status">
  <?php

  include "status.class.php";
  $status = new MinecraftServerStatus();
  $response = $status->getStatus("mc27.crew.sk",25580);
  if($response){
    $ip = $response['hostname'].':'.$response['port'];
    $players = $response['players'].'/'.$response['maxplayers'];
    $version = $response['version'];
    echo "<table id=\"status_table\">
      <tr><td>IP: $ip</td></tr>
      <tr><td>Hráčů: $players</td></tr>
      <tr><td>Verze: $version</td></tr>
      <tr><td>GaMmA 1.6.2</td></tr>
    </table>";
  }else{


  }
  ?>




  </div>
  </body>
</html>


status.class.php


<?php
 
    /**
     * Minecraft Server Status Query
     * @author Julian Spravil <julian.spr@t-online.de> https://github.com/FunnyItsElmo
     * @license Free to use but dont remove the author, license and copyright
     * @copyright © 2013 Julian Spravil
     */
    class MinecraftServerStatus {
        private $timeout;
 
        /**
         * Prepares the class.
         * @param int    $timeout   default(3)
         */
        public function __construct($timeout = 3) {
            $this->timeout = $timeout;
        }
 
        /**
         * Gets the status of the target server.
         * @param string    $host    domain or ip address
         * @param int    $port    default(25565)
         */
        public function getStatus($host = 'mc27.crew.sk', $port = 25580) {
 
            //Transform domain to ip address.
            if (substr_count($host , '.') != 4) $host = gethostbyname($host);
 
            //Get timestamp for the ping
            $start = microtime(true);
 
            //Connect to the server
            if(!$socket = @stream_socket_client('tcp://'.$host.':'.$port, $errno, $errstr, $this->timeout)) {
 
                //Server is offline
                return false;
 
 
            } else {
 
                stream_set_timeout($socket, $this->timeout);
 
                //Write and read data
                fwrite($socket, "\xFE\x01");
                $data = fread($socket, 2048);
                fclose($socket);
                if($data == null) return false;
 
                //Calculate the ping
                $ping = round((microtime(true)-$start)*1000);
 
                //Evaluate the received data
                if (substr((String)$data, 3, 5) == "\x00\xa7\x00\x31\x00"){
 
                    $result = explode("\x00", mb_convert_encoding(substr((String)$data, 15), 'UTF-8', 'UCS-2'));
                    $motd = preg_replace("/(§.)/", "",$result[1]);
 
                }else{
 
                    $result = explode('§', mb_convert_encoding(substr((String)$data, 3), 'UTF-8', 'UCS-2'));
 
                    $motd = "";
                    foreach ($result as $key => $string) {
                        if($key != sizeof($result)-1 && $key != sizeof($result)-2 && $key != 0) {
                            $motd .= '§'.$string;
                        }
                    }
 
                    $motd = preg_replace("/(§.)/", "", $motd);
 
                }
                //Remove all special characters from a string
                $motd = preg_replace("/[^[:alnum:][:punct:] ]/", "", $motd);
 
                //Set variables
                $res = array();
                $res['hostname'] = $host;
                $res['version'] = $result[0];
                $res['motd'] = $motd;
                $res['players'] = $result[sizeof($result)-2];
                $res['maxplayers'] = $result[sizeof($result)-1];
                $res['ping'] = $ping;
                $res['port'] = $port;
                //return obj
                return $res;
            }
 
        }
    }
 
?>


Tu jsem předělal jen IP
lorin
Profil
sitole
Před všechen PHP kód (za značku <?php) napiš error_reporting(E_ALL);
Zapne to vypisování chyb..

Edit: Jakou chybu to vypisuje?
DarkMeni
Profil
Proč si smazal tu část za else? Takový to echo "Server je Offline"
Vypadá to, že se nejspíš nepodařilo spojit se serverem a podmínka se vyhodnotila jako že nepravda, takže se zpracuje ta část za else, kde bylo to vypsání že server je offline - který si ale odstranil, takže se nevypíše nic.
Zadáváš tam správnou IP a port?
nemeja
Profil
Ne, do html se mu vypisuje


  <body>
  <div id="online_status">
  error_reporting(E_ALL);error_reporting(E_ALL);



  </div>
  </body>
sitole
Profil
Tak asi to vezmeme od znova.. :-)

Takže status.class.php


error_reporting(E_ALL);<?php
 
    /**
     * Minecraft Server Status Query
     * @author Julian Spravil <julian.spr@t-online.de> https://github.com/FunnyItsElmo
     * @license Free to use but dont remove the author, license and copyright
     * @copyright © 2013 Julian Spravil
     */
    class MinecraftServerStatus {
        private $timeout;
 
        /**
         * Prepares the class.
         * @param int    $timeout   default(3)
         */
        public function __construct($timeout = 3) {
            $this->timeout = $timeout;
        }
 
        /**
         * Gets the status of the target server.
         * @param string    $host    domain or ip address
         * @param int    $port    default(25565)
         */
        public function getStatus($host = 'mc27.crew.sk', $port = 25580) {
 
            //Transform domain to ip address.
            if (substr_count($host , '.') != 4) $host = gethostbyname($host);
 
            //Get timestamp for the ping
            $start = microtime(true);
 
            //Connect to the server
            if(!$socket = @stream_socket_client('tcp://'.$host.':'.$port, $errno, $errstr, $this->timeout)) {
 
                //Server is offline
                return false;
 
 
            } else {
 
                stream_set_timeout($socket, $this->timeout);
 
                //Write and read data
                fwrite($socket, "\xFE\x01");
                $data = fread($socket, 2048);
                fclose($socket);
                if($data == null) return false;
 
                //Calculate the ping
                $ping = round((microtime(true)-$start)*1000);
 
                //Evaluate the received data
                if (substr((String)$data, 3, 5) == "\x00\xa7\x00\x31\x00"){
 
                    $result = explode("\x00", mb_convert_encoding(substr((String)$data, 15), 'UTF-8', 'UCS-2'));
                    $motd = preg_replace("/(§.)/", "",$result[1]);
 
                }else{
 
                    $result = explode('§', mb_convert_encoding(substr((String)$data, 3), 'UTF-8', 'UCS-2'));
 
                    $motd = "";
                    foreach ($result as $key => $string) {
                        if($key != sizeof($result)-1 && $key != sizeof($result)-2 && $key != 0) {
                            $motd .= '§'.$string;
                        }
                    }
 
                    $motd = preg_replace("/(§.)/", "", $motd);
 
                }
                //Remove all special characters from a string
                $motd = preg_replace("/[^[:alnum:][:punct:] ]/", "", $motd);
 
                //Set variables
                $res = array();
                $res['hostname'] = $host;
                $res['version'] = $result[0];
                $res['motd'] = $motd;
                $res['players'] = $result[sizeof($result)-2];
                $res['maxplayers'] = $result[sizeof($result)-1];
                $res['ping'] = $ping;
                $res['port'] = $port;
                //return obj
                return $res;
            }
 
        }
    }
 
?>


V pořádku?
DarkMeni
Profil
sitole:
V pořádku?
Ne, error_reporting(E_ALL); by měl být uvnitř PHP skriptu, takže až za značkou <?php
Ale problem nejspíš bude v tom, že se nepodařilo vytvořit spojení se serverem.
A nemusíš pokaždý posílat celý kód, když ti teda nikdo neřek, abys poslal celej - stačí jen ta část, která by mohla způsobovat problem

Jak máš na stránkách:

Blog LIVE

Je mě 12 let a umím programovat v HTML, PHP, CSS a JavaSkriptu...


Tak s tim PHP, no nevim... Buď se ho teda nauč nebo to tam nepiš
sitole
Profil
PHP se učím a právě toto je 1 :D No je to pravda dobře jinak žádný problém jako IP nebo tak?

Prosím pokud ano pošlete mě část scriptu kde je problém.

A ted chcete ještě statu.php

Omlouvám se, ten posílám celý protože tam nevím kde by mohla být chybka :)


<!DOCTYPE html>
<html>
  <head>
    <title>Online Status</title>
    <style type="text/css">
      #online_status {
        background: url("signa2.png");
        width: 550px;
        height: 150px;
      }
      #status_table {
        /*nějaký nastylování...*/
      }
    </style>
  </head>
  <body>
  <div id="online_status">
<?php

  include "status.class.php";
  $status = new MinecraftServerStatus();
  $response = $status->getStatus("mc27.crew.sk",25580);
  if($response){
    $ip = $response['hostname'].':'.$response['port'];
    $players = $response['players'].'/'.$response['maxplayers'];
    $version = $response['version'];
    echo "<table id=\"status_table\">
      <tr><td>IP: $ip</td></tr>
      <tr><td>Hráčů: $players</td></tr>
      <tr><td>Verze: $version</td></tr>
      <tr><td>GaMmA 1.6.2</td></tr>
    </table>";
  }else{
    echo "<span id=\"offline\">Server je Offline</span>";
  }
  ?>
</div>
  </body>
</html>
DarkMeni
Profil
Však ti to vypíše že server je offline (kdyby sis nastyloval #offline na nějakou kontrastní barvu, nebo si zorbazil zdroják, tak to tam uvidíš)

Jestli ten server ve skutečnosti offline neni, tak pak je problem někde při vytváření spojení se serverem, můžeš zkusit něco jako:

<?php
$ip = gethostbyname('mc27.crew.sk');
$port = 22580;
$socket = stream_socket_client("tcp://$ip:$port", $error_no, $error_message, 3);
var_dump($socket, $error_no, $error_message);
?>

A podívat se na to jaký chyby to vypisuje
sitole
Profil
Mam problém s dosazením doscript píše to errory jakože je to špatně vložené nemůžete mě sem nakopírovat upravený status.class.php
Nalenete víše
Fisir
Profil
Reaguji na sitole:
Csze? Nsps nmas status.php a status.class.php v stjny sloze. Konkrétní chybová hláška? Co jsi našel, když sis ji vygooglil?
sitole
Profil
Tak nic jsem nenašel museli jste radit až tu :D

Tak a pokud to jde pošlu vám sem celé souory a pošlete mě je zpt opravené? :) vím že je to moc práce ale hrozně to potřebuju.

status.class.php

<?php
 
    /**
     * Minecraft Server Status Query
     * @author Julian Spravil <julian.spr@t-online.de> https://github.com/FunnyItsElmo
     * @license Free to use but dont remove the author, license and copyright
     * @copyright © 2013 Julian Spravil
     */
    class MinecraftServerStatus {
        private $timeout;
 
        /**
         * Prepares the class.
         * @param int    $timeout   default(3)
         */
        public function __construct($timeout = 3) {
            $this->timeout = $timeout;
        }
 
        /**
         * Gets the status of the target server.
         * @param string    $host    domain or ip address
         * @param int    $port    default(25565)
         */
        public function getStatus($host = 'mc27.crew.sk', $port = 25580) {
 
            //Transform domain to ip address.
            if (substr_count($host , '.') != 4) $host = gethostbyname($host);
 
            //Get timestamp for the ping
            $start = microtime(true);
 
            //Connect to the server
            if(!$socket = @stream_socket_client('tcp://'.$host.':'.$port, $errno, $errstr, $this->timeout)) {
 
                //Server is offline
                return false;

$ip = gethostbyname('mc27.crew.sk');
$port = 22580;
$socket = stream_socket_client("tcp://$ip:$port", $error_no, $error_message, 3);
var_dump($socket, $error_no, $error_message);

 
            } else {
 
                stream_set_timeout($socket, $this->timeout);
 
                //Write and read data
                fwrite($socket, "\xFE\x01");
                $data = fread($socket, 2048);
                fclose($socket);
                if($data == null) return false;
 
                //Calculate the ping
                $ping = round((microtime(true)-$start)*1000);
 
                //Evaluate the received data
                if (substr((String)$data, 3, 5) == "\x00\xa7\x00\x31\x00"){
 
                    $result = explode("\x00", mb_convert_encoding(substr((String)$data, 15), 'UTF-8', 'UCS-2'));
                    $motd = preg_replace("/(§.)/", "",$result[1]);
 
                }else{
 
                    $result = explode('§', mb_convert_encoding(substr((String)$data, 3), 'UTF-8', 'UCS-2'));
 
                    $motd = "";
                    foreach ($result as $key => $string) {
                        if($key != sizeof($result)-1 && $key != sizeof($result)-2 && $key != 0) {
                            $motd .= '§'.$string;
                        }
                    }
 
                    $motd = preg_replace("/(§.)/", "", $motd);
 
                }
                //Remove all special characters from a string
                $motd = preg_replace("/[^[:alnum:][:punct:] ]/", "", $motd);
 
                //Set variables
                $res = array();
                $res['hostname'] = $host;
                $res['version'] = $result[0];
                $res['motd'] = $motd;
                $res['players'] = $result[sizeof($result)-2];
                $res['maxplayers'] = $result[sizeof($result)-1];
                $res['ping'] = $ping;
                $res['port'] = $port;
                //return obj
                return $res;
            }
 
        }
    }
 
?>


status.php

<!DOCTYPE html>
<html>
  <head>
    <title>Online Status</title>
    <style type="text/css">
      #online_status {
        background: url("signa2.png");
        width: 550px;
        height: 150px;
      }
      #status_table {
        /*nějaký nastylování...*/
      }
    </style>
  </head>
  <body>
  <div id="online_status">
<?php

  include "status.class.php";
  $status = new MinecraftServerStatus();
  $response = $status->getStatus("mc27.crew.sk",25580);
  if($response){
    $ip = $response['hostname'].':'.$response['port'];
    $players = $response['players'].'/'.$response['maxplayers'];
    $version = $response['version'];
    echo "<table id=\"status_table\">
      <tr><td>IP: $ip</td></tr>
      <tr><td>Hráčů: $players</td></tr>
      <tr><td>Verze: $version</td></tr>
      <tr><td>GaMmA 1.6.2</td></tr>
    </table>";
  }else{
    echo "<span id=\"offline\">Server je Offline</span>";
  }
  ?>
</div>
  </body>
</html>
nemeja
Profil
Máš hosting s podporou socketů? Mám dojem, že některé hostingy tyto funkce nemají povolené.
sitole
Profil
Co to?

může to nějak ovlivnovat tento (plugin) nebo ten status poku ne proím ten script otřebujem opradu pomoct moc.. :(
Fisir
Profil
Reaguji na sitole:
Co to?
Toť otázka.

může to nějak ovlivnovat
Dokonce to může způsobit jeho úplnou nefunkčnost.
sitole
Profil
Fisir:
Pardon, a jak poznám jestli ho na webu mám někde v hostingu? A pod jakým jmenem to ta bude?
Fisir
Profil
Reaguji na sitole:
Pokus se najít něco jako „podpora socketů“ v parametrech tvého hostingu, případně ve FAQ. Co používáš za hosting?
sitole
Profil
http://000webhost.com/
Už jsem napsalna podporu
Fisir
Profil
Reaguji na sitole:
Už jsem napsalna podporu
Netřeba. Říkal jsem, že se stačí podívat na parametry. www.000webhost.com/free-php-hosting: „Sockets support“. V nepodporování socketů to tedy není. Pošleš nám tedy tu chybovou hlášku (a prosím originální znění)?
Davex
Profil
sitole:
Už budu dvat pozor a nevím proč ale blbne mě klávesnice proto si vše musím kontrolovat :)
Tak si prosím před odesláním příspěvku všechno několikrát přečti a všechny chyby pečlivě oprav. Kdo to má to tobě luštit? Za tohle bys ve škole lepší známku než kouli nedostal.

Fisir:
V nepodporování socketů to tedy není.
Uvedená podpora socketů ještě neznamená, že to opravdu funguje a že je povoleno připojení na jakýkoliv port.
sitole
Profil
Tak píšou že ano na hostingu mě sockeny podporují co dále?
DarkMeni
Profil
sitole:
co dále?
Třeba zjistit proč to nefunguje?
Zjisti jak se skript chová a proč se tak chová, třeba tak, že si vypíšeš obsah proměnných například přes funkci var_dump()

Nebo když nevíš jak na to, tak můžeš zkusit vytvořit soubor, dát do něj tenhle kus kódu:

<?php
ini_set('display_errors', '1');
error_reporting(E_ALL);
header('content-type: text/plain;charset=utf-8');
$ip = gethostbyname('mc27.crew.sk');
$port = 25580;
$timeout = 2;
$socket = stream_socket_client("tcp://$ip:$port", $error_no, $error_message, $timeout);
stream_set_timeout($socket, $timeout);
fwrite($socket, "\xFE\x01");
$data = fread($socket, 2048);
fclose($socket);
var_dump($ip, $port, $socket, $error_no, $error_message, $data, iconv('ucs-2', 'utf-8//ignore', substr($data, 15)));
?>

Nechat to zpracovat a pak napsat co ti to vypsalo.
sitole
Profil
DarkMeni:


<br><table border='1' cellpadding='2' bgcolor='#FFFFDF' bordercolor='#E8B900' align='center'><tr><td><font face='Arial' size='1' color='#000000'><b>PHP Error Message</b></font></td></tr></table><br />
<b>Warning</b>:  stream_socket_client() [<a href='function.stream-socket-client'>function.stream-socket-client</a>]: unable to connect to tcp://176.9.114.242:25580 (Connection timed out) in <b>/home/a6493243/public_html/Banner/bla.php</b> on line <b>8</b><br />
<br><table border='1' cellpadding='2' bgcolor='#FFFFDF' bordercolor='#E8B900' align='center'><tr><td><div align='center'><a href='http://www.000webhost.com/'><font face='Arial' size='1' color='#000000'>Free Web Hosting</font></a></div></td></tr></table><br><table border='1' cellpadding='2' bgcolor='#FFFFDF' bordercolor='#E8B900' align='center'><tr><td><font face='Arial' size='1' color='#000000'><b>PHP Error Message</b></font></td></tr></table><br />
<b>Warning</b>:  stream_set_timeout(): supplied argument is not a valid stream resource in <b>/home/a6493243/public_html/Banner/bla.php</b> on line <b>9</b><br />
<br><table border='1' cellpadding='2' bgcolor='#FFFFDF' bordercolor='#E8B900' align='center'><tr><td><div align='center'><a href='http://www.000webhost.com/'><font face='Arial' size='1' color='#000000'>Free Web Hosting</font></a></div></td></tr></table><br><table border='1' cellpadding='2' bgcolor='#FFFFDF' bordercolor='#E8B900' align='center'><tr><td><font face='Arial' size='1' color='#000000'><b>PHP Error Message</b></font></td></tr></table><br />
<b>Warning</b>:  fwrite(): supplied argument is not a valid stream resource in <b>/home/a6493243/public_html/Banner/bla.php</b> on line <b>10</b><br />
<br><table border='1' cellpadding='2' bgcolor='#FFFFDF' bordercolor='#E8B900' align='center'><tr><td><div align='center'><a href='http://www.000webhost.com/'><font face='Arial' size='1' color='#000000'>Free Web Hosting</font></a></div></td></tr></table><br><table border='1' cellpadding='2' bgcolor='#FFFFDF' bordercolor='#E8B900' align='center'><tr><td><font face='Arial' size='1' color='#000000'><b>PHP Error Message</b></font></td></tr></table><br />
<b>Warning</b>:  fread(): supplied argument is not a valid stream resource in <b>/home/a6493243/public_html/Banner/bla.php</b> on line <b>11</b><br />
<br><table border='1' cellpadding='2' bgcolor='#FFFFDF' bordercolor='#E8B900' align='center'><tr><td><div align='center'><a href='http://www.000webhost.com/'><font face='Arial' size='1' color='#000000'>Free Web Hosting</font></a></div></td></tr></table><br><table border='1' cellpadding='2' bgcolor='#FFFFDF' bordercolor='#E8B900' align='center'><tr><td><font face='Arial' size='1' color='#000000'><b>PHP Error Message</b></font></td></tr></table><br />
<b>Warning</b>:  fclose(): supplied argument is not a valid stream resource in <b>/home/a6493243/public_html/Banner/bla.php</b> on line <b>12</b><br />
<br><table border='1' cellpadding='2' bgcolor='#FFFFDF' bordercolor='#E8B900' align='center'><tr><td><div align='center'><a href='http://www.000webhost.com/'><font face='Arial' size='1' color='#000000'>Free Web Hosting</font></a></div></td></tr></table>string(13) "176.9.114.242"
int(25580)
bool(false)
int(110)
string(20) "Connection timed out"
bool(false)
string(0) ""

<!-- Hosting24 Analytics Code -->
<script type="text/javascript" src="http://stats.hosting24.com/count.php"></script>
<!-- End Of Analytics Code -->
Fisir
Profil
Reaguji na sitole:
Nezdařilo se připojení k serveru. Zkontroluj port a IP. Sockety se na tom tvém hostingu chovají nějak podivně. Zkusil jsem ten skript nakopírovat k sobě a žádný problém: bordel.fisir.tk/mcstatus.php
DarkMeni
Profil
Bude to nejspíš chyba někde na straně hostingu, mě to na localhostu načíst šlo.
Můžeš zkusit prodloužit čas na načítání (změnit hodnotu proměnné $timeout třeba na 5) ale pochybuju že to nějak pomůže, ale můžeš to zkusit.
Nebo místo stream_socket_client() použít jinou funkci, třeba fsockopen() nebo fopen()
sitole
Profil
Dobře mam to a jiném hostingu funguje děkuju mc :) ted jen potřebuju udělat at to gamma a celkové veškerý text ení černou ale nějak barevně :) barvy zvládnu jen mě to prosím napište ten script na odcentrování a třeba at je vše zelenou..
Jinak moc moc děkuju
Fisir
Profil
Reaguji na sitole:
prosím napište ten script na odcentrování
Na to je sekce Práce a zakázky. Prosím, pošli nám kód, který nefunguje a popiš, co by měl dělat. Pak ti poradíme, jak to opravit.
DarkMeni
Profil
sitole:
jen mě to prosím napište ten script na odcentrování
Nemyslíš že to už přeháníš? Už na začátku tohohle tématu ti bylo řečeno že s takovýmhle přístupem můžeš napsat tak akorát do Prací a zakázek

A to už neni věc nějakýho skriptu - kdyby to byl obrázek, tak by byla, ale teď máš jako výstup HTML kód, takže CSS stylu, kdyžtak nějakou nápovědu najdeš na Jak psát web - CSS

Sorry Fisir, byl si rychlejší :D
sitole
Profil
Ok tak o zvládnu já myslel žeto musí taky bejt v PHP děkuju moc..

- uzavřeno :)
nemeja
Profil
Udělám ti to za 200,- Kč, kdyžtak piš na email co mám v profilu.
sitole
Profil
Ne děkuju barvy mam :)

Ale ještě potřebuju najít nějaký hosting. Je mě jedno jak to bude třeba bannery.sono.cz ale zdarma a reklama musí bejt až na konci stránky protože když budu dávt iframe na jiný web bude reklama na ic.cz nevzhledná :)

http://sitole.ic.cz/banner/status.php?server=mc27.crew.sk&port=25580

Také potřebuju at osting podporuje HTML PHP CSS a Sockety Jinak to nepůjde
Děkuju
« 1 2 3 »

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: