je vais vous proposer aujourd'hui un partage en PHP, qui vous permettra d'afficher l'uptime, le nombre de joueurs connectés et d'autres informations bonus.
Tout d’abord, vous devez créer un fichier de configuration que j'ai nommé configuration.php :
<?php class MySQL { var $host = "VOTRE HOST"; var $Port = "PORT"; //de base 8085 private $user = "username"; //un nom d'utilisateur de rand 5 private $password = "password"; //son mots de passe private $world = "world"; //par default private $auth = "auth"; //par default private $characters = "characters"; //par default public function __construct (){ } public function ConnectWorld () { try { $db = new PDO('mysql:host='.$this->host.';dbname='.$this->world.'', $this->user, $this->password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); return $db; } catch (Exception $e) { return die('Erreur : ' . $e->getMessage()); } } public function ConnectAuth () { try { $db = new PDO('mysql:host='.$this->host.';dbname='.$this->auth.'', $this->user, $this->password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); return $db; } catch (Exception $e) { return die('Erreur : ' . $e->getMessage()); } } public function ConnectCharacters () { try { $db = new PDO('mysql:host='.$this->host.';dbname='.$this->characters.'', $this->user, $this->password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); return $db; } catch (Exception $e) { return die('Erreur : ' . $e->getMessage()); } } } ?>
Très bien, notre fichier de configuration est prêt ! Nous allons dès à présent créer un fichier nommé stats.php qui vas récupérer les informations du serveur et les traiter !
<?php include ('config/configuration.php'); //ce chemin est propre à chacun libre à vous de modifié le chemin du fichier et ou le nom class Stats extends MySQL { public function __construct() { } public function Etat () { if (!$this->sock = @fsockopen($this->host, $this->Port, $num, $error, 1)) { return '<img src="themes/img/offline.png"/ class="off">'; //libre à vous de mètrent vôtre propre chemin } else{ return '<img src="themes/img/online.png"/ class="on">'; //libre à vous de mètrent vôtre propre chemin fclose($this->sock); } } public function MemberOnline () { if (!$this->sock = @fsockopen($this->host, $this->Port, $num, $error, 1)) { return '0'; } else{ $db = MySQL :: ConnectCharacters(); $reponse = $db->query("SELECT COUNT(*) FROM `characters` WHERE `online` = '1'"); return $reponse->fetchColumn(); fclose($this->sock); } } public function Inscrit () { $db = MySQL :: ConnectAuth(); $reponse = $db->query("SELECT COUNT(*) FROM `account`"); return $reponse->fetchColumn(); } public function RecordCo () { $db = MySQL :: ConnectAuth(); $reponse = $db->query('SELECT max(`maxplayers`) FROM uptime'); return $reponse->fetchColumn(); } public function Uptime () { $db = MySQL :: ConnectAuth(); $reponse = $db->prepare("SELECT * FROM `uptime` WHERE `realmid` = '1' ORDER BY `starttime` DESC LIMIT 1") or die(mysql_error()); $reponse->execute(); $row_uptime = $reponse->fetch(); $this->day = floor($row_uptime['uptime'] / 86400); if($this->day > 0) $this->days = $this->day; else $this->days = ''; $this->hours = floor(($row_uptime['uptime'] - ($this->day * 86400)) / 3600); if($this->hours < 10) $this->hours = '0'.$this->hours; $this->min = floor(($row_uptime['uptime'] - (($this->hours * 3600) + ($this->day * 86400))) / 60); if ($this->min < 10) $this->min = "0".$this->min; $this->sec = $row_uptime['uptime'] - ($this->day * 86400) - ($this->hours * 3600) - ($this->min * 60); if ($this->sec < 10) $this->sec = "0".$this->sec; return '' . $this->days . ' j, ' . $this->hours . ' h, ' . $this->min . ' m, ' . $this->sec . ' s.'; } public function Realmlist () { $db = MySQL :: ConnectAuth(); $reponse = $db->prepare('SELECT address FROM realmlist WHERE id = "1"'); $reponse->execute(); $this->RealmlistF = $reponse->fetch(); return $this->RealmlistF['address']; } public function Guilde () { $db = MySQL :: ConnectCharacters(); $reponse = $db->query("SELECT COUNT(*) FROM `guild`"); return $reponse->fetchColumn(); } public function Arene () { $db = MySQL :: ConnectCharacters(); $reponse = $db->query("SELECT COUNT(*) FROM `arena_team`"); return $reponse->fetchColumn(); } } $Stat = new Stats; ?>
Voilà, tout y est ! En fait, pas tout à fait, il ne reste plus qu'à afficher le résultat ! Nous allons créer un fichier statu.php. Je tiens à préciser que le fichier statut.php est créé de façon à être intégré dans une page, vous pouvez néanmoins le modifier et l’intégrer directement dans vos pages php sans avoir à utiliser d'include.
<?php include ('stats.php'); echo $Stat->Etat().'<br />'; echo ('<p class="statutext">Nombre de connecté : '.$Stat->MemberOnline().'<br />'); echo ('Nombre d\'inscrit : '.$Stat->Inscrit().'<br />'); echo ('Record de connecté : '.$Stat->RecordCo().'<br />'); echo ('Uptime : '.$Stat->Uptime().'<br />'); echo ('Set realmlist '.$Stat->Realmlist().'<br />'); echo ('Nombre de guilde : '.$Stat->Guilde().'<br />'); echo ('Nombre d\'arene : '.$Stat->Arene().'<br /></p>'); ?>
Enfin je vous fourni les images ON/OFF avec mais vous pouvez créer les vôtres.
PS : ces images sont simples et faite sur photoshop si elle ne vous plaisent pas bin RAF !