Taip kodas ne mano, bet pats tikrai nepasidaryčiau, kadangi trūksta php žinių.
<?php$packet = "\xFF\xFF\xFF\xFFTSource Engine Query\x00";mysql_connect("localhost", "root", "");mysql_select_db("serverlist");$query = mysql_query("SELECT * FROM serveriai") or die(mysql_error());function getnextstring(&$data) { $temp = ""; $counter = 0; while (ord($data[$counter++]) != 0) $temp.=$data[$counter - 1]; $data = substr($data, strlen($temp) + 1); return $temp;}function getnextbytevalue(&$data) { $temp = ord($data[0]); $data = substr($data, 1); return $temp;}while ($row = mysql_fetch_array($query)) { if (!$live_server = fsockopen("udp://" . $row['ip'] . ":" . $row['port'] . "")) { $output = "Off"; } else { fwrite($live_server, $packet); socket_set_timeout($live_server, 1, 0); $junk = fread($live_server, 5); $status = socket_get_status($live_server); $do = 1; $server_info = ""; while ($do) { $str_1 = fread($live_server, 1); $server_info .= $str_1; $status = socket_get_status($live_server); if ($status["unread_bytes"] == 0) { $do = 0; } } fclose($live_server); if (strlen($server_info) > 0) { $success = 1; $junk = getnextstring($server_info); $servername = getnextstring($server_info); $map = getnextstring($server_info); $junk = getnextstring($server_info); $junk = getnextstring($server_info); $players = getnextbytevalue($server_info); $maxplayers = getnextbytevalue($server_info); } if ($players != '') { $players = $players; } else { $players = "0"; } if ($maxplayers != '') { $maxplayers = $maxplayers; } else { $maxplayers = "0"; } if ($players < $maxplayers) { $output = "<font color='green'>On</font>"; } else { $output = "<font color='#54ff00'>Full</font>"; } if ($output != "Full" and $players != "0" or $maxplayers != "0") { $output = $output; } else { $output = "<font color='red'>Off</font>"; } if ($map != '') { $map = "" . $map . ""; } else { $map = "-----"; } if ($servername != '') { $servername = $servername; } else { $servername = "<font color='#ff3600'>Serveris neveikia</font>"; } } echo "<table cellpadding='0' cellspacing='1' width='100%' height='25'>\n<tr>\n"; echo"<td class='gtinasr56' align='center'>" . $output . "</td> <td class='vovercikas' align='center'>" . $row['ip'] . ":" . $row['port'] . "</td> <td class='vovercikas' align='center'>" . $servername . "</td> <td class='vovercikas' align='center'>" . $map . "</td> <td class='vovercikas' align='center'>" . $players . "/" . $maxplayers . "</td>"; echo "</tr>\n</table>\n";}?>
<?phpmysql_connect("localhost", "root", "");mysql_select_db("serverlist");$query = mysql_query("SELECT * FROM serveriai") or die(mysql_error());while ($row = mysql_fetch_array($query)) { print_r($row); echo '<br />'; echo '<br />';}?>
Viskas lyg ir veikia, bet kažkokios nesąmonės vyksta kartais rodo tuos pačius du serverių pavadinimus, nors ipai skirtingi, arba tokį pat mapą ir žaidėjų skaičių, nors serveriai yra skirtingi.