Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Status serverów
Forum PHP.pl > Forum > Przedszkole
Snap
A więc chciałem zrobic www z STATUSAMI SERVERÓW do pewneg gry MuOnline, ale gdy mam 1 status servera wszystko jest OK, problem powstaje wtedy gdy dodam 2,3,4... status server, wyskakuje mi taki oto błąd na www :


Fatal error: Cannot redeclare is_muserver_online() (previously declared in /home/accounts_j/julchoklad/public_html/main.php(94) : eval()'d code:3) in /home/accounts_j/julchoklad/public_html/main.php(94) : eval()'d code on line 23


Prosze o pomoc, a i to jest kod php którego używam do pokazywania statusów:

[/CODE]
<?php
is_muserver_online('111.222.333.444');
function is_muserver_online($ip)
{
$ports = array("<font color=\"000000\">NAZWA SERVERA</font>" => "55901" );

foreach($ports as $server => $port)
{
if($fp = @fsockopen($ip, $port, $errno, $errstr, 1) == false)
{
echo "</b>" . $server . "</b>: <font color=\"FF0000\">Offline</font>";
}
else
{
echo "</b>" . $server . "</b>: <font color=\"00FF00\">Online</font>";
}
}
}
?>
[/CODE]

Prosze o pomoc, wszystko jasno jest opisane.

A to jest skrypt w którym błąd występuje:

Kod
<br>
<?php
is_muserver_online('111.222.333.444');
function is_muserver_online($ip)
{
$ports = array("<font color=\"000000\">NAZWA SERVERA</font>" => "55901" );

foreach($ports as $server => $port)
{
if($fp = @fsockopen($ip, $port, $errno, $errstr, 1) == false)
{
echo "</b>" . $server . "</b>: <font color=\"FF0000\">Offline</font>";
}
else
{
echo "</b>" . $server . "</b>: <font color=\"00FF00\">Online</font>";
}
}
}
?>
<br>
<?php
is_muserver_online('111.222.333.444');
function is_muserver_online($ip)
{
$ports = array("<font color=\"000000\">NAZWA SERVERA</font>" => "55901" );

foreach($ports as $server => $port)
{
if($fp = @fsockopen($ip, $port, $errno, $errstr, 1) == false)
{
echo "</b>" . $server . "</b>: <font color=\"FF0000\">Offline</font>";
}
else
{
echo "</b>" . $server . "</b>: <font color=\"00FF00\">Online</font>";
}
}
}
?>
<br>


Chciałbym żeby ten skryp wyświetlał mi na www sie w taki sposub np:

Server OldMu: Online

Server Jakistam: Offline

Server costam: Offline

Server Costam2: Online

Server blabla: Online

A i Jeszcze jedno Każdy server ma Swoje PORTY otwarte dzięki którym możemy połączyć sie z nim i nie te porty są różne

W tym skrypcie za NAZWA SERVERA jest port 555901

Przerobiłem ten skrypt na taki:

Kod
<?php
function is_muserver_online($ip)
{
$ports = array("<font color=\"000000\">NAZWA SERVERA</font>" => "55901" );

foreach($ports as $server => $port)
{
if($fp = @fsockopen($ip, $port, $errno, $errstr, 1) == false)
{
echo "</b>" . $server . "</b>: <font color=\"FF0000\">Offline</font>";
}
else
{
echo "</b>" . $server . "</b>: <font color=\"00FF00\">Online</font>";
}
}
}


is_muserver_online('ip1');
is_muserver_online('ip2');
is_muserver_online('ip3');
?>


Ale znowu porty są takie same i na stronie wyświetla mi się to tak:

NAZWA SERVERA: OfflineNAZWA SERVERA: OnlineNAZWA SERVERA: Online

Wszytko razem bez przerwy itp. :/

Prosze bardzo o pomoc :/ sadsmiley02.gif sad.gif Ja się w tym gubie blink.gif
tiraeth
Za dużo razy utworzyłeś funkcję is_muserver_online.. Pomieszany kod.... zaraz napiszę Ci fajny skrypcik który wyświetli wszystko ładnie...

Sprawdź ten skrypt:
  1. <?php
  2. function serverStatus($ip, $port = 55901)
  3. {
  4.  /*
  5. * zmienna $port trzyma domyslny port dla serwerow
  6. */
  7.  $serverNames = array (
  8.  '111.222.333.444:55901' => 'Nazwa serwera 1', 
  9.  '111.222.333.444:55902' => 'Nazwa serwera 2'
  10. );
  11.  
  12.  if($fp = @fsockopen($ip, $port, $errno, $errstr, 1) == false)
  13.  {
  14. $tablica['status'] = true;
  15.  }
  16.  else
  17.  {
  18. $tablica['status'] = false;
  19.  }
  20.  
  21.  $tablica['port'] = $port;
  22.  $tablica['ip'] = $ip;
  23.  $tablica['host'] = gethostbyaddr($ip);
  24.  $tablica['name'] = $serverNames[$ip.':'.$port];
  25.  
  26.  return $tablica;
  27. }
  28.  
  29. # przykład użycia
  30. $s2 = serverStatus('111.222.333.444');
  31. $s1 = serverStatus('111.222.333.444', '55902');
  32.  
  33. echo '<pre>';
  34.  print_r($s1);
  35. echo '</pre>';
  36. echo '<br />';
  37. echo '<pre>';
  38.  print_r($s2);
  39. echo '</pre>';
  40. ?>
Snap
OK wrzuciłem all to co mi dałeś uzupełniając sobe tak:
  1. <?php
  2. function serverStatus($ip, $port = 55901)
  3. {
  4.  /*
  5. * zmienna $port trzyma domyslny port dla serwerow
  6. */
  7.  $serverNames = array (
  8.  'hefron.no-ip.info:55901' => 'Herfon Mu',
  9.  '82.146.225.113:55901' => 'Warka Mu'
  10. );
  11.  
  12.  if($fp = @fsockopen($ip, $port, $errno, $errstr, 1) == false)
  13.  {
  14. $tablica['status'] = true;
  15.  }
  16.  else
  17.  {
  18. $tablica['status'] = false;
  19.  }
  20.  
  21.  $tablica['port'] = $port;
  22.  $tablica['ip'] = $ip;
  23.  $tablica['host'] = gethostbyaddr($ip);
  24.  $tablica['name'] = $serverNames[$ip.':'.$port];
  25.  
  26.  return $tablica;
  27. }
  28.  
  29. # przykład użycia
  30. $s2 = serverStatus('hefron.no-ip.info');
  31. $s1 = serverStatus('82.146.225.113', '55901');
  32.  
  33. echo '<pre>';
  34.  print_r($s1);
  35. echo '</pre>';
  36. echo '<br />';
  37. echo '<pre>';
  38.  print_r($s2);
  39. echo '</pre>';
  40. ?>


W ten sposub sprawdzam status servera który ma inny port
Kod
$s1 = serverStatus('82.146.225.113', [B]'55901'[/B]);


a wiec wżucilem to na ten link --- Tu --- i wyskakuje mi bład

Warning: gethostbyaddr(): Address is not a valid IPv4 or IPv6 address in /home/accounts_j/julchoklad/public_html/server.php on line 23


1. gdzie moge zmienić żeby widzieć ze jest Online, Offline
2. Na www wyświetla mi się to w takiej postaci:


Warning: gethostbyaddr(): Address is not a valid IPv4 or IPv6 address in /home/accounts_j/julchoklad/public_html/server.php on line 23

Array
(
[status] => 1
[port] => 55901
[ip] => 82.146.225.113
[host] => 82.146.225.113
[name] => Warka Mu
)


Array
(
[status] =>
[port] => 55901
[ip] => hefron.no-ip.info
[host] =>
[name] => Herfon Mu
)



Można zlikwidować te Array questionmark.gif? i ), ( żeby tego niebyło widać na www

P.S dodam że server Herfon jest Online ,a Warka Offline
dr_bonzo
http://pl.php.net/manual/pl/function.gethostbyaddr.php

przeciez IP to IP a nie 'host name' (hefron.no-ip.info)
Snap
dobra a jak usunąć te array i ( ) zeby niebyło ich widać na www i jak zrobić żeby było widać Online Offline w ten sposub z kolorami

P.S
Ten skrypt pokazuje mi:
[status] =>
[port] => 55901
[ip] => hefron.no-ip.info
[name] => Herfon Mu

P.S.2 Naprawde jestem zielony w tych sprawach ale powoli zaczynam sie uczyc
tiraeth
Hmm... a czy ty cokolwiek zrozumiałeś z tego skryptu??

Kod
Array
(
[status] => 1                    <----- jeżeli wartość elementu "status" w tablicy jest równa 1 to serwer jest ONLINE
[port] => 55901                  <----- zwraca port
[ip] => 82.146.225.113           <----- zwraca ip
[host] => 82.146.225.113         <----- powinno zwrócić host (jeżeli [ip]=[host] to nie ma hosta - sam ip)
[name] => Warka Mu               <----- nazwa serwera - pobrana z tego $serverNames
)


  1. <?php
  2. function serverStatus($ip, $isIP = true, $port = 55901)
  3. {
  4.    /*
  5.     * zmienna $port trzyma domyslny port dla serwerow
  6.     * zmienna $isIP trzyma informacje o tym czy wartosc
  7.     * w zmiennej $ip to host/adres ip
  8.     */
  9.    $serverNames = array (
  10.              'hefron.no-ip.info:55901' => 'Herfon Mu',
  11.              '82.146.225.113:55901' => 'Warka Mu'
  12.             );
  13.  
  14.    if($isIP)
  15.    {
  16.       $tablica['ip'] = $ip;
  17.       $tablica['host'] = gethostbyaddr($ip);
  18.    }
  19.    else
  20.    {
  21.       $tablica['ip'] = gethostbyname($ip);
  22.       $tablica['host'] = $ip;
  23.    }
  24.  
  25.  
  26.    if($fp = @fsockopen($ip, $port, $errno, $errstr, 1) == false)
  27.    {
  28.       $tablica['status'] = true;
  29.    }
  30.    else
  31.    {
  32.       $tablica['status'] = false;
  33.    }
  34.  
  35.    $tablica['port'] = $port;
  36.    $tablica['name'] = $serverNames[$ip.':'.$port];
  37.  
  38.    return $tablica;
  39. }
  40.  
  41. # przykład użycia
  42. $s2 = serverStatus('hefron.no-ip.info', false);      # pobieramy info z serwera hefron.no-ip.info (HOST) o porcie domyslnym (55901)
  43. $s1 = serverStatus('82.146.225.113', true, '55901'); # pobieramy info z serwera 82.146.225.113 (IP) o porcie 55901 (przeciez nie trzeba bylo go pisac)
  44.  
  45. # jezeli jako pierwszy parametr podalismy adres ip to jako drugi podajemy true, 
  46. ezeli natomiast jest to host to jako drugi parametr podajemy false
  47.  
  48. $status_1 = ($s1['status']) ? 'Online' : 'Offline';  # jezeli status jest 1 to Online
  49. $status_2 = ($s2['status']) ? 'Online' : 'Offline';  # a jezeli 0 to Offline
  50. $color_1 = ($s1['status']) ? 'green' : 'red';
  51. $color_2 = ($s2['status']) ? 'green' : 'red';
  52.  
  53. echo '<b>'.$s1['name'].':</b> <span style=\"color:'.$color_2.';\">'.$status_1.'</span>';
  54. echo '<br /><br />';
  55. echo '<b>'.$s2['name'].':</b> <span style=\"color:'.$color_1.';\">'.$status_2.'</span>';
  56. # przykład użycia
  57. ?>

Zmodyfikowałem funkcję, już tego błędu niepowinno być.... zobacz co teraz ten kod wyświetla, ok?
Snap
OK zrobiłem tak jak mówisz ale :
- - - - - Coś nie tak - - - - -
wyskakuje mi:
Parse error: parse error, unexpected ',', expecting '{' in /home/accounts_j/julchoklad/public_html/servers.php on line 2

Ja się nieznam zabardzo na php więc niewiem co jest grane
tiraeth
UPDATE 1. NAPRAWIŁEM BŁDY W KODZIE... TERAZ JUŻ DZIAŁA!
UPDATE 2. POPRAWIŁEM KOLOR W SERWERACH
Snap
OK faktycznie teraz już działa

Ej dlaczego dy server jest offline wyświetla sie online na czerwono questionmark.gifquestionmark.gif
Gość_Snap
Dlaczego gdy server jest online to pisze Offline, a gy server jest offline pisze Online, a i powie ktoś jak zrobić, co zkopiować gdzie co dodać żeby dodać np: 20 nowych serverów questionmark.gifquestionmark.gif
dr_bonzo
Cytat
jak zrobić, co zkopiować gdzie co dodać żeby dodać np: 20 nowych serverów questionmark.gifquestionmark.gif

Myslenie nie boli -- wystarczy przeanalizowac kod i wszystko bedzie jasne.

co do bledu:
  1. <?php
  2. f( ( $fp = @fsockopen($ip, $port, $errno, $errstr, 1) ) === false)
  3.  {
  4. $tablica['status'] = false;// ZAMIANA
  5.  }
  6.  else
  7.  {
  8. $tablica['status'] = true;// ZAMIANA
  9.  }
  10. ?>
tiraeth
bonzo masz rację smile.gif niezauważyłem w tym ifie tego false tongue.gif
Gość_Master
Mam problem Mój config wygląda tak:
<?php
//=========== FragFrog's MU WebCenter ===============
// Welcome to FrogMu's WebCenter, originally based on
// IO*'s files and editted and modified by FragFrog
//=========== FragFrog's Mu WebCenter ================

//============== USER EDITABLE AREA ===================

// Enter the IP or DSN of the database server to connect to
// Change to your server IP (if remote only) works with DNS
$dbhost = "127.0.0.1";

// Enter the username to connect to the db
$dbuser = "php";

// Enter the password for the SQL Server
$dbpasswd = "master";

//Admin Login
$alogin = "php";

//Admin Password
$apass = "master";

//Database Name
$db = 'MuOnline';

//Host. IP If working remotely
$host = '127.0.0.1';

$ip = "192.168.13.46";

$regsubmit = "regform.submit()";
$msconnect=mssql_connect("$host","$alogin","$apass");
$msdb=mssql_select_db("$db",$msconnect);


?>

Stronka sie wyświetla, po wejściu na nią pojawia mi coś takiego
'Fatal error: Call to undefined function mssql_connect() in c:\AppServ\www\Website\config.php on line 34 '
czy wie ktoś jak to można naprawić (mam system XP) questionmark.gif
Gość_Matikx
  1. <?php
  2. function serverStatus($ip, $isIP = true, $port = 55901)
  3. {
  4.  /*
  5. * zmienna $port trzyma domyslny port dla serwerow
  6. * zmienna $isIP trzyma informacje o tym czy wartosc
  7. * w zmiennej $ip to host/adres ip
  8. */
  9.  $serverNames = array (
  10.  'hefron.no-ip.info:55901' => 'Herfon Mu',
  11.  '82.146.225.113:55901' => 'Warka Mu'
  12. );
  13.  
  14.  if($isIP)
  15.  {
  16. $tablica['ip'] = $ip;
  17. $tablica['host'] = gethostbyaddr($ip);
  18.  }
  19.  else
  20.  {
  21. $tablica['ip'] = gethostbyname($ip);
  22. $tablica['host'] = $ip;
  23.  }
  24.  
  25.  
  26.  if($fp = @fsockopen($ip, $port, $errno, $errstr, 1) == false)
  27.  {
  28. $tablica['status'] = true;
  29.  }
  30.  else
  31.  {
  32. $tablica['status'] = false;
  33.  }
  34.  
  35.  $tablica['port'] = $port;
  36.  $tablica['name'] = $serverNames[$ip.':'.$port];
  37.  
  38.  return $tablica;
  39. }
  40.  
  41. # przykład użycia
  42. $s2 = serverStatus('hefron.no-ip.info', false); # pobieramy info z serwera hefron.no-ip.info (HOST) o porcie domyslnym (55901)
  43. $s1 = serverStatus('82.146.225.113', true, '55901'); # pobieramy info z serwera 82.146.225.113 (IP) o porcie 55901 (przeciez nie trzeba bylo go pisac)
  44.  
  45. # jezeli jako pierwszy parametr podalismy adres ip to jako drugi podajemy true, 
  46. ezeli natomiast jest to host to jako drugi parametr podajemy false
  47.  
  48. $status_1 = ($s1['status']) ? 'Online' : 'Offline'; # jezeli status jest 1 to Online
  49. $status_2 = ($s2['status']) ? 'Online' : 'Offline'; # a jezeli 0 to Offline
  50. $color_1 = ($s1['status']) ? 'green' : 'red';
  51. $color_2 = ($s2['status']) ? 'green' : 'red';
  52.  
  53. echo '<b>'.$s1['name'].':</b> <span style=\"color:'.$color_2.';\">'.$status_1.'</span>';
  54. echo '<br /><br />';
  55. echo '<b>'.$s2['name'].':</b> <span style=\"color:'.$color_1.';\">'.$status_2.'</span>';
  56. # przykład użycia
  57. ?>


To więc pod jakim plikem zapisać php4, php5, czy php3 a może php hmmm
Gość_wrobel
Dopnę się do tematu.

Też gram w tą grę happy.gif i chce zrobić status serwera na forum PHP by przemo i nie mam zielonego pojęcia jak to zrobić. Czy mógłby mi ktoś pomóc By wyświetlało Status Online i Offline na Zielono i Czerwono na takim IP 81.190.102.109 i takim 50001 porcie.

Żeby to tak wyglądało mniej więcej:

DarkPartMu: Online/Offline
DarkPartMu_CS: Online /Offline

Tylko by te statusy sie zmieniał w zależności od serwera czo on czo off.

Chyba wiadomo o co chodzi? To ma być na Forum PHP by przemo do nagłówka i postów.

Bylbym bardzo wdzięczny jakby ktoś wykonał bi mi taki skrypt. Z góry wielkie dzięki.
Gość_wrobel
Te porty by były podwójne

DarkPartMu: Online/Offline - IP 81.190.102.109 port 50001
DarkPartMu_CS: Online /Offline - 81.190.102.109 port 50019

Byłbym wdzięczny za pomoc
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.