[php]Array's/list problem bij game servers indica

Pagina: 1
Acties:

  • Jernst
  • Registratie: Februari 2000
  • Laatst online: 17-06-2024
Ik wil graag op website showen welke gameservers online zijn. Onderstaand script showt van het bij $ip ingevulde ip of het online is, werkt goed, maar ik wel er graag meerdere ip's hebben. Heb het zelf wat geprobeerd via array's maar kom er niet uit. $ip[$i] zaten dan ip's in maar lukte niet omdat $fp ook steeds anders moet zijn. bedoeling is dus dat er output komt met lijstje van ip's en achter elk ip of ie online of offline is. En ip's moeten makkelijk te veranderen zijn aangezien gameservers regelmatig veranderen. Iemand die mij hierbij kan helpen?
PHP:
1
<?<html><head><link rel="stylesheet" href="style.css"></head><body bgcolor="#243462"><table border="0" cellpadding="0" cellspacing="0"><?$ip = ("xxx.xxx.xxx.xxx");$poort = ("xxxx");$fp = fsockopen ("$ip", '$poort', $errno, $errstr, 10);if (!$fp) {  echo "<tr><td width=\"100\"><b>$ip:</b></td><td><font color=\"#FF0000\"><b>Offline</b></font></td></tr>\n";} else {  echo "<tr><td width=\"100\"><b>$ip:</b></td><td><font color=\"#00FF00\"><b>Online</b></font></td></tr>\n";  fclose($fp);}      ?></body></html>?>

  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 19-08 14:53
Volg het onderstaande recept:
  1. Je neemt een array met de verschillende IP-adressen.
  2. Met behulp van een for-loop ga je ze allemaal af.
  3. In die for-loop kijk je van ieder individueel adres of het online is.
  4. Na iedere check gebruik je fclose($fp) om het weer af te sluiten.
  5. Je kunt een aparte array gebruiken om in op te slaan of iets online of offline is.
  6. Als je alles gechecked hebt of de adressen bestaan, maak je een nieuwe for-loop waarin je die tweede array afgaat.
Meer informatie met betrekking tot de functies/for-loops etc. kun je vinden op [url="http://www.php.net/manual/"]http://www.php.net/manual/[/url].

Overigens wil ik nog een ding zeggen: zet om een variabele alleen nooit "$var" en zeker nooit '$var'! Ik zie dat je in je code '$poort' hebt staan, maar als PHP dit ziet, dan zal hij letterlijk de tekst '$poort' doorgeven en niet de variabele $poort.

In ieder geval succes! :)

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 14:19
Hoe wil je IP's invoeren ?
Als je bijvoorbeeld instelt dat je ze bij het invoeren scheidt met een komma, kun je dit doen:
PHP:
1
<?$arrayList = explode(",", $_GET['ip']);foreach($arrayList as $currentIP){  $currentIP = explode(":", $currentIP);  $fp = fsockopen ($currentIP[0], $currentIP[1], $errno, $errstr, 10);  if(isset($fp) && $fp)    echo "online";  else    echo "offline";}?>

Nu zo invoeren:

192.168.0.1:2000,192.168.0.2:4000,192.168.0.3:6000

en het moet werken :).

  • Grum
  • Registratie: Juni 2001
  • Niet online
nog 1 tipje .. gameservers zijn niet tcp maar udp ;)

hmm .. nu ik me eigenpost nog es lees ga ik zelf twijfelen :D ... et game VERKEER is iig udp ;)

  • Tubby
  • Registratie: Juni 2001
  • Laatst online: 01-09 21:59

Tubby

or not to be

Op woensdag 24 juli 2002 07:40 schreef Grum het volgende:
nog 1 tipje .. gameservers zijn niet tcp maar udp ;)

hmm .. nu ik me eigenpost nog es lees ga ik zelf twijfelen :D ... et game VERKEER is iig udp ;)
Je moet ook de udp socket openen wil je wat terug krijgen, heb zelf ook zo'n scriptje ergens liggen :)
PHP:
1
<?function getStatus($ip,$port,$string){    $host="udp://$ip";    $fp = fsockopen ($host,$port,$errno,$errstr,10);     if (!$fp) {echo "$errstr ($errno)<BR>\n";}     $bm = socket_set_blocking ($fp,FALSE);     fputs($fp, $string);    while (!$status)     {        $status = fread ($fp,100000);        if($status)        {            $status=trim($status);            if($status!="")            {                $stats=$status;            }            else $stats=false;        }        else $stats=false;    }    fclose($fp);    return $stats;}?>

$hl-details=getStatus($ip,$port,"ÿÿÿÿdetails\x00");
$hl-players=getStatus($ip,$port,"ÿÿÿÿplayers\x00");
$q3-status=getStatus($ip,$port,"ÿÿÿÿgetstatus");

Zo kun je Q3 en HL servers uitlezen (Q3 heeft maar 1 string nodig om alles terug te geven)

tubby.nl - Artes Moriendi - q1 - bf1942 - WoT - pubg - LinkedIN


  • Jernst
  • Registratie: Februari 2000
  • Laatst online: 17-06-2024
Heb ip's nu in een array staan en zijn zo makkelijk te veranderen, hij werkt verder ook goed maar het zou mooier zijn als het code herhalen wat ik nu steeds doe zou worden vervangen door enkele code met daarin een for-loop denk ik.
PHP:
1
<?$ip[] = ("192.168.0.1");$ip[] = ("192.168.0.2");$ip[] = ("192.168.0.3");$ip[] = ("192.168.0.4");$ip[] = ("192.168.0.5");$fp = fsockopen ("$ip[0]", 'poort', $errno, $errstr, 10);if (!$fp) {  echo "<tr><td width=\"100\"><b>$ip[0]:</b></td><td><font color=\"#FF0000\"><b>Offline</b></font></td></tr>\n";} else {  echo "<tr><td width=\"100\"><b>$ip[0]:</b></td><td><font color=\"#00FF00\"><b>Online</b></font></td></tr>\n";  fclose($fp);}$fp = fsockopen ("$ip[1]", 'poort', $errno, $errstr, 10);if (!$fp) {  echo "<tr><td width=\"100\"><b>$ip[1]:</b></td><td><font color=\"#FF0000\"><b>Offline</b></font></td></tr>\n";} else {  echo "<tr><td width=\"100\"><b>$ip[1]:</b></td><td><font color=\"#00FF00\"><b>Online</b></font></td></tr>\n";  fclose($fp);}$fp = fsockopen ("$ip[2]", 'poort', $errno, $errstr, 10);if (!$fp) {  echo "<tr><td width=\"100\"><b>$ip[2]:</b></td><td><font color=\"#FF0000\"><b>Offline</b></font></td></tr>\n";} else {  echo "<tr><td width=\"100\"><b>$ip[2]:</b></td><td><font color=\"#00FF00\"><b>Online</b></font></td></tr>\n";  fclose($fp);}$fp = fsockopen ("$ip[3]", 'poort', $errno, $errstr, 10);if (!$fp) {  echo "<tr><td width=\"100\"><b>$ip[3]:</b></td><td><font color=\"#FF0000\"><b>Offline</b></font></td></tr>\n";} else {  echo "<tr><td width=\"100\"><b>$ip[3]:</b></td><td><font color=\"#00FF00\"><b>Online</b></font></td></tr>\n";  fclose($fp);}$fp = fsockopen ("$ip[4]", 'poort', $errno, $errstr, 10);if (!$fp) {  echo "<tr><td width=\"100\"><b>$ip[4]:</b></td><td><font color=\"#FF0000\"><b>Offline</b></font></td></tr>\n";} else {  echo "<tr><td width=\"100\"><b>$ip[4]:</b></td><td><font color=\"#00FF00\"><b>Online</b></font></td></tr>\n";  fclose($fp);}    ?>

  • Grum
  • Registratie: Juni 2001
  • Niet online
leer [url="http://php.net/functions"]functies[/url] ...

  • Jernst
  • Registratie: Februari 2000
  • Laatst online: 17-06-2024
Op woensdag 24 juli 2002 12:42 schreef Grum het volgende:
leer [url="http://php.net/functions"]functies[/url] ...
Als ik er een functie van maak dan moet ik toch nog voor elk ip apart vermelden, wil het graag via lus doen zodat het niet uitmaakt hoeveel ip's er in staan (verandert regelmatig) en niet voor elk ip aanhalen zoals ik nu heb, of voor elk ip weer functie oproepen.

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

ten eerste deugtj je array assignment niet ;)

verder zou je de control structures ff kunnen bekijken (foreach bv.)

Klaar voor een nieuwe uitdaging.


  • Grum
  • Registratie: Juni 2001
  • Niet online
En dat zou niet netter zijn he ? .. neeeeeeeeeeeeeeeeeeeeeee ...

:Z


[edit]bah chem .. reageer is niet eerder :D[/edit]

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 24-08 21:59

Macros

I'm watching...

Probeer dit eens:
PHP:
1
<?$ip = array(   "192.168.0.1",  "192.168.0.2",  "192.168.0.3");for($i=0; $i<sizeOf($ip); $i++){  $fp = fsockopen ("$ip[$i]", 'poort', $errno, $errstr, 10);  if (!$fp) {    echo "<tr><td width=\"100\"><b>$ip[$i]:</b></td><td><font color=\"#FF0000\"><b>Offline</b></font></td></tr>\n";  } else {    echo "<tr><td width=\"100\"><b>$ip[$i]:</b></td><td><font color=\"#00FF00\"><b>Online</b></font></td></tr>\n";  }  fclose($fp);}?>

"Beauty is the ultimate defence against complexity." David Gelernter


  • Grum
  • Registratie: Juni 2001
  • Niet online
$ip[0] <-- ? :D

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 24-08 21:59

Macros

I'm watching...

oops
Waarom 'vergeet' dit forum mijn enters als ik iets wil editen? Ik blijf overal weer enters in plakken als ik 1 ding wil editen. Beetje frustrerend.

"Beauty is the ultimate defence against complexity." David Gelernter


  • Jernst
  • Registratie: Februari 2000
  • Laatst online: 17-06-2024
Op woensdag 24 juli 2002 13:57 schreef Macros het volgende:
Probeer dit eens:
PHP:
1
&lt;?$ip = array(   &quot;192.168.0.1&quot;,  &quot;192.168.0.2&quot;,  &quot;192.168.0.3&quot;);for($i=0; $i&lt;sizeOf($ip); $i++){  $fp = fsockopen (&quot;$ip[$i]&quot;, 'poort', $errno, $errstr, 10);  if (!$fp) {    echo &quot;&lt;tr&gt;&lt;td width=\&quot;100\&quot;&gt;&lt;b&gt;$ip[$i]:&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;font color=\&quot;#FF0000\&quot;&gt;&lt;b&gt;Offline&lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;\n&quot;;  } else {    echo &quot;&lt;tr&gt;&lt;td width=\&quot;100\&quot;&gt;&lt;b&gt;$ip[$i]:&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;font color=\&quot;#00FF00\&quot;&gt;&lt;b&gt;Online&lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;\n&quot;;  }  fclose($fp);}?&gt;
Thx, dit is hoe ik het wou.
Pagina: 1