I'm from germany and I've tried to follow your tut, but if the server is offline it still shows:
Status: Online
Slots: f / f
Any idea what kind of mistake i made? heres the code:
view_server.php:
<?php include('core/init.inc.php'); if (!isset($_GET['sid']) || empty($config['servers'][$_GET['sid']])){ header('Location: server_list.php'); die(); } $server_ip = $config['servers'][$_GET['sid']][0]; $server_port = $config['servers'][$_GET['sid']][1]; $info = fetch_server_info($server_ip, $server_port); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title><?php echo $server_ip; ?> Status</title> </head> <body> <div> <h1><?php echo $server_ip; ?></h1> <?php if ($info === false){ echo '<p>Status: Offline<br>', 'Players: - / -</p>'; }else{ echo '<p>Status: Online<br>', 'Players: ', $info['players'], ' / ', $info['max_players'], '</p>'; } ?> </div> </body> </html>server_list.php:
<?php include('core/init.inc.php'); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Hallo</title> </head> <body> <div> <?php foreach ($config['servers'] as $id => $server){ echo '<p><a href="view_server.php?sid=', $id, '">', $server[0], '</a></p>'; } ?> </div> </body> </html>init.inc.php:
<?php $path = dirname(__FILE__); include("{$path}/config.inc.php"); include("{$path}/inc/mc.inc.php"); ?>config.inc.php:
<?php $config['servers'][] = array('mc.somethingcraft.co.uk', 25565); $config['servers'][] = array('test123', 25565); #To test an offline server! ?>mc.inc.php:
<?php //fetches server information. function fetch_server_info($ip, $port){ $socket = @fsockopen($ip, $port, $errno, $errstr, 0.5); if ($socket === false){ return flase; } fwrite($socket, "\xfe"); $data = fread($socket, 256); if (substr($data, 0, 1)!= "\xff"){ return false; } $data = explode('§', mb_convert_encoding(substr($data, 3), 'UTF8', 'UCS-2')); return array( 'motd' => $data[0], 'players' => intval($data[1]), 'max_players' => intval($data[2]), ); } ?>Changed the output a little bit, just for looks (I don't need the motd - hope it doesn't matter).
The folders:
status:
- view_server.php
- server_list.php
---> core
---- config.inc.php
---- init.inc.php
-----> inc
------ mc.inc.php
Greetings from germany,
SicX!