<?php
$server = get_server_status("ipdelsv", "puerto");
?>
<?php
echo "<div class='table-responsive'>";
echo "<table class='table table-hover'>";
echo "<center>";
echo "<h2>Estadisticas del servidor</h2>";
echo "<div class='table-responsive'>";
echo "<table class='table table-hover'>
<tr bgcolor=#cccccc border=1>
<td>Servidor</td>
<td>Direccion IP</td>
<td>Mapa Actual</td>
<td>Jugadores</td>
<td>Modo de Juego</td>";
echo "</tr>";
echo "<tr>";
echo "<td>".$server['name']."</td>";
echo "<td><font color=#33ff00 size=2><b><a href='steam://connect/". $server["ip"] ."'>". $server["ip"] ."</td>";
echo "<td>".$server["map"]."</td>";
echo "<td>".$server["players"]. "/" .$server["maxplayers"]."</td>";
echo "<td>".$server["gamename"]."</td>";
echo"</tr></table>";
<?php
function get_server_status($ip, $port)
{
$socket = @fsockopen("udp://".$ip, $port , $errno, $errstr, 1);
if(!$socket)
{
//die("Servidor no responde...");
}
fwrite($socket, "\xFF\xFF\xFF\xFFTSource Engine Query\x00");
$r = fread($socket, 4096);
@fclose($socket);
$server = array();
if($r[4] == 'm') // Este tipo de query es si Dpronto quiero ver otro tipo de sv
{
$data = explode("\x00", substr($r, 5));
$server['ip'] = $data[0];
$server['name'] = $data[1];
$server['map'] = $data[2];
$server['mod'] = $data[3];
$server['gamename'] = $data[4];
$server['test'] = $data[5];
$l = 5;
$l += strlen($data[0]) + 1;
$l += strlen($data[1]) + 1;
$l += strlen($data[2]) + 1;
$l += strlen($data[3]) + 1;
$l += strlen($data[4]) + 1;
$server['players'] = ord($r[$l]);
$l += 1;
$server['maxplayers'] = ord($r[$l]);
return $server;
}
else if($r[4] == 'I')
{
$data = explode("\x00", substr($r, 6));
$server['ip'] = sprintf("%s:%s", $ip, $port);
$server['name'] = $data[0];
$server['map'] = $data[1];
$server['mod'] = $data[2];
$server['gamename'] = $data[3];
$server['test'] = $data[4];
$l = 6;
$l += strlen($data[0]) + 1;
$l += strlen($data[1]) + 1;
$l += strlen($data[2]) + 1;
$l += strlen($data[3]) + 3;
$server['players'] = ord($r[$l]);
$l += 1;
$server['maxplayers'] = ord($r[$l]);
return $server;
}
else
{
//die("Servidor no responde...");
}
return false;
}