Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Очередная ошибка;|

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Safok
Отправлено: 05 Марта, 2013 - 19:06:22
Post Id



Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Март 2013  


Помог: 0 раз(а)

[+]


Помогите с выводом мониторинг.. ОЧ СРОЧНО НАДО!

Спойлер (Отобразить)



Вывожу:
Спойлер (Отобразить)
 
 Top
NoPaper
Отправлено: 05 Марта, 2013 - 19:10:40
Post Id



Посетитель


Покинул форум
Сообщений всего: 315
Дата рег-ции: Янв. 2012  
Откуда: Минск


Помог: 9 раз(а)




И чем помочь?
 
 Top
Safok
Отправлено: 05 Марта, 2013 - 19:16:42
Post Id



Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Март 2013  


Помог: 0 раз(а)

[+]


NoPaper пишет:
И чем помочь?

А данные не рисуются..
 
 Top
NoPaper
Отправлено: 05 Марта, 2013 - 19:49:46
Post Id



Посетитель


Покинул форум
Сообщений всего: 315
Дата рег-ции: Янв. 2012  
Откуда: Минск


Помог: 9 раз(а)




Перед строкой


Добавь


Переменная $igro создана в блоке if, а значит только там она и доступна
 
 Top
Safok
Отправлено: 05 Марта, 2013 - 19:55:08
Post Id



Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Март 2013  


Помог: 0 раз(а)

[+]


NoPaper пишет:
Перед строкой


Добавь


Переменная $igro создана в блоке if, а значит только там она и доступна

PHP:
скопировать код в буфер обмена
  1.  Мне надо рисовать только "онлайн/макс.онлайн", ошибка в строке
  2. $Server = public function getInfo() ($ips, $ports);
 
 Top
NoPaper
Отправлено: 05 Марта, 2013 - 20:04:15
Post Id



Посетитель


Покинул форум
Сообщений всего: 315
Дата рег-ции: Янв. 2012  
Откуда: Минск


Помог: 9 раз(а)




PHP:
скопировать код в буфер обмена
  1. $Server = public function getInfo() ($ips, $ports);

Мде... извращение еще то...

PHP:
скопировать код в буфер обмена
  1.  
  2. $query = new SampQuery($_GET['server'],$_GET['port']);
  3. $Server = $query -> getInfo();
  4.  
 
 Top
Safok
Отправлено: 05 Марта, 2013 - 20:22:06
Post Id



Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Март 2013  


Помог: 0 раз(а)

[+]


Получился вот такой код:

status.php

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. include('SampQuery.class.php');
  3.  
  4. $query = new SampQuery($_GET['server'],$_GET['port']);
  5. $Server = $query -> getInfo();
  6.  $playeron = $Server->players;
  7.  $playermax = $Server->maxplayers;
  8.  $Server->Online ?  $statusi = 1 : $statusi = 0;
  9.  $igroki ='Role Play '.$Server->players.'/'.$Server->maxplayers;
  10.  
  11. if ($statusi == 1) {
  12.  $igrok = 220*$playeron/$playermax;
  13.  $igro = $igroki;
  14. } else {
  15.   $igrok = '220';
  16.   $igro = 'OFFLINE';
  17. }
  18.   header("Content-Type: image/png");
  19.   $image = imagecreate(220, 20); /*Длина, высота*/
  20.   $dark_grey = imagecolorallocate($image, 235, 235, 235);
  21.   $blek = imagecolorallocate($image, 0, 0, 0);
  22.   $gren = imagecolorallocate($image, 0, 255, 0);
  23.   $red = imagecolorallocate($image, 255, 0, 0);
  24.   if ($statusi == 0) {
  25.    $cvet = $red;
  26.   } else {
  27.   $cvet = $gren;
  28.   }
  29.   $font_path = 'MyriadPro.otf';
  30.   imagefilledrectangle($image,0,0,$igrok,180,$cvet);
  31.   imagettftext($image, 13, 0, 70, 15, $blek, $font_path, $igro); /*Размер шрифта, поворот текста, отступ текста от начала, опускание текста вниз*/
  32.   imagepng($image);
  33.   imagedestroy($image);
  34. ?>


SampQuery.class
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. /**
  3.  *
  4.  * @author Edward McKnight (EM-Creations.co.uk)
  5.  */
  6.  
  7. /* *****************************************************************
  8. // SampQuery.class.php
  9. // Version 1.0
  10. // This class connects to a specific SA-MP server via sockets.
  11. // Copyright 2012 Edward McKnight (EM-Creations.co.uk)
  12. // Creative Commons Attribution-NoDerivs 3.0 Unported License
  13. // http://creativecommons.org/licenses/by-nd/3.0/
  14. // Credits to Westie for the original PHP SA-MP API and inspiration for this API.
  15. * *****************************************************************/
  16.  
  17. class SampQuery {
  18.     private $sock = null;
  19.     private $server = "195.112.231.229";
  20.     private $port = "7777";
  21.        
  22.     /**
  23.     *   Creates a new SampQuery object.
  24.     *   @param $server server hostname
  25.     *   @param $port port of the server
  26.     */
  27.     public function __construct($server, $port=7777)
  28.     {
  29.         $this->server = $server;
  30.         $this->port = $port;
  31.  
  32.         $this->sock = fsockopen("udp://".$this->server, $this->port, $errorNum, $errorString, 2);
  33.         socket_set_timeout($this->sock, 2);
  34.     }
  35.  
  36.     ///UPUPUPUPUP
  37.     public function getInfo() {
  38.         @fwrite($this->sock, $this->assemblePacket("i"));
  39.  
  40.         fread($this->sock, 11);
  41.  
  42.         $serverInfo = array();
  43.  
  44.         $serverInfo['password'] = (integer) ord(fread($this->sock, 1));
  45.  
  46.         $serverInfo['players'] = (integer) $this->toInt(fread($this->sock, 2));
  47.  
  48.         $serverInfo['maxplayers'] = (integer) $this->toInt(fread($this->sock, 2));
  49.  
  50.         $strLen = ord(fread($this->sock, 4));
  51.         if(!$strLen) return -1;
  52.  
  53.         $serverInfo['hostname'] = (string) fread($this->sock, $strLen);
  54.  
  55.         $strLen = ord(fread($this->sock, 4));
  56.         $serverInfo['gamemode'] = (string) fread($this->sock, $strLen);
  57.  
  58.         $strLen = ord(fread($this->sock, 4));
  59.         $serverInfo['map'] = (string) fread($this->sock, $strLen);
  60.  
  61.         return $serverInfo;
  62.     }
  63.  
  64.  
  65.    
  66.     public function getBasicPlayers() {
  67.         @fwrite($this->sock, $this->assemblePacket("c"));
  68.         fread($this->sock, 11);
  69.  
  70.         $playerCount = ord(fread($this->sock, 2));
  71.         $players = array();
  72.  
  73.         if($playerCount > 0) {
  74.             for($i = 0; $i < $playerCount; ++$i) {
  75.                 $strLen = ord(fread($this->sock, 1));
  76.                 $players[$i] = array
  77.                 (
  78.                     "name" => (string) fread($this->sock, $strLen),
  79.                     "score" => (integer) $this->toInt(fread($this->sock, 4)),
  80.                 );
  81.             }
  82.         }
  83.         return $players;
  84.     }
  85.  
  86.  
  87.  
  88.     public function getDetailedPlayers() {
  89.         @fwrite($this->sock, $this->assemblePacket("d"));
  90.         fread($this->sock, 11);
  91.  
  92.         $playerCount = ord(fread($this->sock, 2));
  93.         $players = array();
  94.  
  95.         for($i = 0; $i < $playerCount; ++$i) {
  96.             $player['playerid'] = (integer) ord(fread($this->sock, 1));
  97.  
  98.             $strLen = ord(fread($this->sock, 1));
  99.             $player['nickname'] = (string) fread($this->sock, $strLen);
  100.  
  101.             $player['score'] = (integer) $this->toInt(fread($this->sock, 4));
  102.             $player['ping'] = (integer) $this->toInt(fread($this->sock, 4));
  103.  
  104.             $players[$i] = $player;
  105.             unset($player);
  106.         }
  107.         return $players;
  108.     }
  109.  
  110.  
  111.     /**
  112.     * Returns an array of server rules.
  113.     * @return Array[]
  114.     * (
  115.     *   [gravity] => gravity
  116.     *   [mapname] => map
  117.     *   [version] => version
  118.     *   [weather] => weather
  119.     *   [weburl] => weburl
  120.     *   [worldtime] => worldtime
  121.     * )
  122.     */
  123.     public function getRules() {
  124.         @fwrite($this->sock, $this->assemblePacket("r"));
  125.         fread($this->sock, 11);
  126.  
  127.         $ruleCount = ord(fread($this->sock, 2));
  128.         $rules = array();
  129.  
  130.         for($i = 0; $i< $ruleCount; ++$i) {
  131.             $strLen = ord(fread($this->sock, 1));
  132.             $rule = (string) fread($this->sock, $strLen);
  133.  
  134.             $strLen = ord(fread($this->sock, 1));
  135.             $rules[$rule] = (string) fread($this->sock, $strLen);
  136.         }
  137.         return $rules;
  138.     }
  139.    
  140.     /**
  141.     * Returns the server's ping.
  142.     * @return integer
  143.     */
  144.     public function getPing() {
  145.         $ping = 0;
  146.         $beforeSend = microtime(true);
  147.         @fwrite($this->sock, $this->assemblePacket("r"));
  148.         fread($this->sock, 15);
  149.         $afterReceive = microtime(true);
  150.        
  151.         $ping = ($afterReceive - $beforeSend) * 1000;
  152.        
  153.         return round($ping);
  154.     }
  155.  
  156.     private function toInt($string) {
  157.         if($string === "") {
  158.             return null;
  159.         }
  160.  
  161.         $int = 0;
  162.         $int += (ord($string[0]));
  163.  
  164.         if(isset($string[1])) {
  165.             $int += (ord($string[1]) << 8);
  166.         }
  167.  
  168.         if(isset($string[2])) {
  169.             $int += (ord($string[2]) << 16);
  170.         }
  171.  
  172.         if(isset($string[3])) {
  173.             $int += (ord($string[3]) << 24);
  174.         }
  175.  
  176.         if($int >= 4294967294) {
  177.             $int -= 4294967296;
  178.         }
  179.         return $int;
  180.     }
  181.  
  182.     private function assemblePacket($type) {
  183.         $packet = "SAMP";
  184.         $packet .= chr(strtok($this->server, "."));
  185.         $packet .= chr(strtok("."));
  186.         $packet .= chr(strtok("."));
  187.         $packet .= chr(strtok("."));
  188.         $packet .= chr($this->port & 0xFF);
  189.         $packet .= chr($this->port >> 8 & 0xFF);
  190.         $packet .= $type;
  191.  
  192.         return $packet;
  193.     }
  194.    
  195.     /**
  196.     * Attempts to connect to the server and returns whether it was successful.
  197.     * @return boolean
  198.     */
  199.     public function connect() {
  200.         $connected = false;
  201.         fwrite($this->sock, $this->assemblePacket("p0101"));
  202.  
  203.         if(fread($this->sock, 10)) {
  204.             if(fread($this->sock, 5) == 'p0101') {
  205.                 $connected = true;
  206.             }
  207.         }
  208.         return $connected;
  209.     }
  210.    
  211.     /**
  212.     * Closes the connection
  213.     */
  214.     public function close() {
  215.         @fclose($this->sock);
  216.     }
  217. }


Ошибки:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. Warning: fsockopen() [function.fsockopen]: unable to connect to udp://:0 (Failed to parse address "") in Z:\home\test1.ru\www\monitor\server1\SampQuery.class.php on line 32
  3.  
  4. Warning: socket_set_timeout() expects parameter 1 to be resource, boolean given in Z:\home\test1.ru\www\monitor\server1\SampQuery.class.php on line 33
  5.  
  6. Warning: fread() expects parameter 1 to be resource, boolean given in Z:\home\test1.ru\www\monitor\server1\SampQuery.class.php on line 40
  7.  
  8. Warning: fread() expects parameter 1 to be resource, boolean given in Z:\home\test1.ru\www\monitor\server1\SampQuery.class.php on line 44
  9.  
  10. Warning: fread() expects parameter 1 to be resource, boolean given in Z:\home\test1.ru\www\monitor\server1\SampQuery.class.php on line 46
  11.  
  12. Warning: fread() expects parameter 1 to be resource, boolean given in Z:\home\test1.ru\www\monitor\server1\SampQuery.class.php on line 48
  13.  
  14. Warning: fread() expects parameter 1 to be resource, boolean given in Z:\home\test1.ru\www\monitor\server1\SampQuery.class.php on line 50
  15.  
  16. Warning: Cannot modify header information - headers already sent by (output started at Z:\home\test1.ru\www\monitor\server1\SampQuery.class.php:32) in Z:\home\test1.ru\www\monitor\server1\status.php on line 18
  17. &#65533;PNG  IHDR&#65533;&#65533;Nk!PLTE&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;?&#65533;&#65533;__C&#65533; &#65533;IDATH&#65533;&#65533;&#65533;A &#65533;@`&#65533;&#65533;3o!o&#65533;&#65533;&#65533;8&#65533;h'&#65533;&#65533;#<@x&#65533;&#1656;&#65533;&#65533;Ek&#65533;&#65533;`- f&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;h&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;R&#65533;bj&#65533;&#65533;apv&#65533;]&#65533;z&#65533;&#65533;&#65533;#u&#65533;bc9&#65533;s&#65533;&#65533;^ &#65533;&#65533;&#65533;Dc&#65533;&#65533;&#65533;/&#65533;G&#65533;&#65533;3&#65533;G&#65533;8
  18. $&#65533;c&#65533;/.&#65533; &#65533;ZC&#65533;&#65533;&#65533;T_@H&#65533;&#65533;yrmk&#65533;s&#65533;&#65533;)&#65533;%&#65533;°&#65533;&#65533;I&#65533;&#65533;;y&#65533;&#65533;V&#65533;&#65533;Dq&#65533;&#65533;K&#65533;&#987;&#65533;&#65533;&#65533;&#65533;&#65533;I&#65533;&#65533;d&#65533;9wY&#65533;&#65533;&#65533;@y&#65533;&#65533;&#65533;r&#65533;IEND&#65533;B`&#65533;

(Отредактировано автором: 05 Марта, 2013 - 20:23:14)

 
 Top
imya
Отправлено: 05 Марта, 2013 - 20:25:14
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


Помог: 19 раз(а)




А по ошибкам не понятно??
смотрите в сторону ф-ции fread


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
Safok
Отправлено: 05 Марта, 2013 - 20:29:05
Post Id



Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Март 2013  


Помог: 0 раз(а)

[+]


imya пишет:
А по ошибкам не понятно??
смотрите в сторону ф-ции fread

По моим знаниям лучше даже не смотреть к код;D
 
 Top
Мелкий Супермодератор
Отправлено: 06 Марта, 2013 - 08:27:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Safok пишет:
unable to connect to udp://:0 (Failed to parse address "")

Вы здесь видите ip (или хостнейм) и порт?
Я не вижу. PHP - тоже.
Следовательно - их и нету. Не пришли из $_GET'а.

NoPaper пишет:
Переменная $igro создана в блоке if, а значит только там она и доступна

Путаете с каким-то другим языком. PHP не выделяет if'ы в отдельные области видимости.


-----
PostgreSQL DBA
 
 Top
dreamhackblr
Отправлено: 06 Марта, 2013 - 08:31:54
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Март 2013  


Помог: 0 раз(а)




а я вот не мог понять почему вы передаете первым параметром в fread логическое значение... у вас ведь как я понимаю sock = null
может я чего не так понял... если я ошибся поправьте и разъясните... буду благодарен...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB