Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Brakuje 0 w monitorze..
Forum PHP.pl > Forum > PHP
miras
WITAM! mam pewien skrypcik, który monitoruje pewien serwer ventrilo.. gdy jest 0 osób na serwerze to zamiast pokazywać 0/100 pokazuje /100 Wiem, że powinienem sprawdzić czy players = 0 jezeli tak to wyświetlic 0 jezeli nie to nic nie robic , ale gdy byle co zmienie pluje błędami na całą stronę...
Przykład jak pluje błędami: http://monitoring.xaa.pl/status_ventrilo/x...p;game=ventrilo

Przyklad jak nie wyświetla zera: http://monitoring.xaa.pl/status_ventrilo/i...p;game=ventrilo

Kod:
  1. <?php
  2.  
  3.  
  4. require_once 'GameQ.php';
  5.  
  6. // przykladowe czcionki
  7. define('TEMPESTA', 'status/fonts/tempesta.ttf');
  8. define('TAHOMA', 'status/fonts/tahoma.ttf');
  9. define('VERDANA', 'status/fonts/verdana.ttf');
  10. define('TAHOMA_BOLD', 'status/fonts/tahoma_bold.ttf');
  11.  
  12. // przyporządkowujemy zmienna do zmiennej globalnej
  13. $server = $_GET['server'];
  14. $game = $_GET['game'];
  15.  
  16. // Jesli nie podano ip lub gry
  17. if (isset($server) && !empty($server) && isset($game) && !empty($game))
  18. {
  19. // podzielenie adresu na ip oraz port
  20. list($ip, $port) = explode(":", $server);
  21.  
  22. $gq = new GameQ();
  23. // dodajemy serwer
  24. $gq->addServer('serwer', array($game, $ip, $port));
  25. $gq->setOption('timeout', 200);
  26. $gq->setFilter('normalise');
  27. $gq->setFilter('sortplayers', 'gq_ping');
  28. $results = $gq->requestData();
  29.  
  30. /**
  31. * rozpatrujemy dwa przypadki
  32. * 1 - serwer offline bo nie ma nazwy serwera
  33. * 2 - serwer online
  34. */
  35. if($results['serwer']['gq_hostname']=="")
  36. {
  37. $hostname = "Serwer OFFLINE";
  38. $players = "x";
  39. $playersmax = "x";
  40. $map = "Offline";
  41. }
  42. else
  43. {
  44. $hostname = $results['serwer']['gq_hostname'];
  45. $players = $results['serwer']['gq_numplayers'];
  46. $playersmax = $results['serwer']['gq_maxplayers'];
  47. $map = $results['serwer']['gq_mapname'];
  48. }
  49.  
  50. // utworzenie obrazka z tla
  51. $im = imagecreatefrompng("status/background.png");
  52. // kolor bialy
  53. $white = imagecolorallocate($im, 255, 255, 255);
  54. // polaczenie informacji do jednej zmiennej
  55. $info = $server ." ". $players ." / ". $playersmax ." ". $map;
  56. // gorny rzad, nazwa serwera
  57. imagettftext($im, 7, 0, 30, 10, $white, VERDANA, $hostname);
  58. // dolny rzad, ip serwera, gracze, mapa
  59. imagettftext($im, 7, 0, 30, 21, $white, VERDANA, $info);
  60.  
  61. // nie podano adresu w zmiennej $_GET
  62. } else {
  63. $im = imagecreatefrompng("status/background.png");
  64. $white = imagecolorallocate($im, 255, 255, 255);
  65. $info = "123.456:27015 31 / 32 de_inferno";
  66. imagettftext($im, 7, 0, 30, 10, $white, VERDANA, "Fragles.eu [TESTOWY SERWER] @ fragles.eu");
  67. imagettftext($im, 7, 0, 30, 21, $white, VERDANA, $info);
  68. }
  69.  
  70. // okreslenie typu zawartosci
  71. header('Content-type: image/png');
  72. imagepng($im);
  73. imagedestroy($im);
  74. ?>
Crozin
Wywal nagłówek informujący o tym, że przesyłana treść to obrazek (linia #71) i pokaż nam treść błędu.
miras
Gdy wywale tylko to :header('Content-type: image/png'); to wywala takie same bzdury jak wczesniej a gdy wywale jeszcze :imagepng($im);
imagedestroy($im); to nic nie wyświetla - nawet monitoringu.


ale wdl mnie problem leży gdzie indziej, dlatego że nawet jak usune tam u góry informacje o skrypcie, które nie wchodzą w skład skryptu to wywala te bzdury..
benio101
Między 54. a 55. linię wstaw
  1. if($players=="")$players="0";
miras
Wiem Wiem.. Robiłem tak właśnie, ale zobacz co to wywala ...
http://monitoring.xaa.pl/status_ventrilo/index.php
Crozin
Widocznie gdzieś wysyłasz jakieś białe znaki (niepotrzebnie używasz "?>", być może problemem jest BOM).
miras
Nic takiego nie ma... ja po prostu nic nie moge zeedytować z tego kodu - bo od razu błędy wyskakują ocb ?

Może dam plik GameQ.php ?
krowal
Tak jak Crozin napisał, stawiam na to samo, jeśli działa, a po wyedytowaniu czegokolwiek przestaje to możliwe, że twój edytor dodaje jakieś znaczki na początku (niewidoczne w tym edytorze - BOM) i potem ci sypie takie błędy zamiast wyświetlić obrazek.
fander
Cytat(Crozin @ 20.01.2011, 23:50:04 ) *
Widocznie gdzieś wysyłasz jakieś białe znaki (niepotrzebnie używasz "?>", być może problemem jest BOM).


A co szkodzi używanie short tags ?

Co do błędu, to zainstaluj sobie NetBeans albo Eclipse i w nim edytuj pliczki. Są to darmowe i bardzo dobre, jak nie najlepsze edytory.
Crozin
Cytat
A co szkodzi używanie short tags ?
Napisałem "?>", nie "<?" - chodzi o znacznik zamykający blok PHP.
Cytat
Może dam plik GameQ.php ?
No podaj.
Mephistofeles
Istnieje taka zasada, żeby nie zamykać kodu bez potrzeby.
miras
nie mogę wrzucic pliku gameq, bo jest za duży..
PS. edytuje to w total commanderze na serwerze www - nigdy nie miałem takich problemów..
krowal
A total commander pliki w czym otwiera questionmark.gif? W Notatniku biggrin.gif I jeśli masz starszy Windows to BOM będzie na początku pliku przed tagiem otwierającym '<?php' co spowoduje ten właśnie błąd.
Mephistofeles
Lepiej ściągnij sobie dobre IDE, np. NetBeans, z obsługą FTP. Do zmiany kodowania wystarczy Ci Notepad++.
benio101
Czyli jednak wychodzi na złe kodowanie...
kulczycki
Notepad++ i UTF8 bez BOM. Dość znany błąd winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.