Autor | Zpráva | ||
---|---|---|---|
sitole Profil |
#1 · Zasláno: 30. 10. 2013, 21:41:12
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 |
#3 · Zasláno: 30. 10. 2013, 21:50:19
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 |
#4 · Zasláno: 30. 10. 2013, 23:09:36
Ne, do html se mu vypisuje
<body> <div id="online_status"> error_reporting(E_ALL);error_reporting(E_ALL); </div> </body> |
||
sitole Profil |
#5 · Zasláno: 31. 10. 2013, 14:38:07
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 |
#6 · Zasláno: 31. 10. 2013, 15:00:44
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 |
#7 · Zasláno: 31. 10. 2013, 15:07:40
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 |
#9 · Zasláno: 31. 10. 2013, 15:41:46
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 |
#10 · Zasláno: 31. 10. 2013, 15:52:11
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 |
#11 · Zasláno: 31. 10. 2013, 15:57:20
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 |
#12 · Zasláno: 31. 10. 2013, 16:17:27
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 |
#14 · Zasláno: 31. 10. 2013, 16:34:05
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 |
#15 · Zasláno: 31. 10. 2013, 16:36:28
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 |
#16 · Zasláno: 31. 10. 2013, 16:39:19
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 |
#17 · Zasláno: 31. 10. 2013, 16:58:16
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 |
#19 · Zasláno: 31. 10. 2013, 22:43:10
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 |
#20 · Zasláno: 1. 11. 2013, 15:36:30
Tak píšou že ano na hostingu mě sockeny podporují co dále?
|
||
DarkMeni Profil |
#21 · Zasláno: 1. 11. 2013, 16:27:13
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 |
#22 · Zasláno: 1. 11. 2013, 17:04:41
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:
|
||
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 |
#25 · Zasláno: 1. 11. 2013, 17:19:26
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 |
#26 · Zasláno: 1. 11. 2013, 17:28:32
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 |
#28 · Zasláno: 1. 11. 2013, 17:34:00
Ok tak o zvládnu já myslel žeto musí taky bejt v PHP děkuju moc..
- uzavřeno :) |
||
nemeja Profil |
#29 · Zasláno: 1. 11. 2013, 18:33:19
Udělám ti to za 200,- Kč, kdyžtak piš na email co mám v profilu.
|
||
sitole Profil |
#30 · Zasláno: 2. 11. 2013, 16:01:17
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 |
||
Téma pokračuje na další straně.
|
0