2016-05-27 8 views
-2

インデックス これはインデックスPHPウェブサイト とインデックスphpインクルード統計情報php 統計取得インデックスphp $ server = array( "serverip"、);形式 minecraftサーバーの状態をpingするには now [$ server = array( "serverip"、); ]私は、MySQLにserver_list IP とサポート状況を読みたい サーバIPサーバーのIPが にpingを実行し、返してもらうインデックスPHP plaeseヘルプありがとうmysqlクエリはstatus.phpのデータと配列形式を取得します

<?php 

// Autoloader. Use SPL in a real project. 
foreach(array('Server', 'Stats', 'StatsException') as $file) { 
include sprintf('%s.php', $file); 
} 
$db_conn = @mysql_connect("localhost", "svl", "456852123456") or die ("Could not connect: " . mysql_error()); 
mysql_select_db("ncsv_svl", $db_conn); 
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $db_conn); 
$sql = ("SELECT IP FROM `server_list` ORDER BY `server_list`.`Rank` DESC"); 
$query = mysql_query($sql); 

$servers = array(
"ncsv.tw", 
"s.nerd.nu", 
"p.nerd.nu", 
"hardcore.hcsmp.com", 
"theverge.game.nfoservers.com:25565", 
); 

?><!DOCTYPE html> 
<html lang="en"> 
<head> 
<meta charset="UTF-8" /> 
<title>Minecraft Server Status</title> 
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css" /> 
<link rel="stylesheet" type="text/css" href="http://www.bootcss.com/p/buttons/css/buttons.css" /> 
<link href="http://cdn.bootcss.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet"> 
<style>tr td,tr th {text-align:center !important}tr td.motd,tr th.motd{text-align:center !important;}</style> 
<style>.status{width:50px;}</style> 
<style> 
body{ 
      background-image: url('bg.jpg'); 
      background-repeat: repeat-x; 
      background-color: #6B4B34; 
     } 
     .style1 {color: #00FF00} 
.style2 { 
color: #FF0000; 
font-size: 20px; 
} 
</style> 
<!-- HTML5 shim --> 
<!--[if lt IE 9]> 
    <script src="http://html5shim.googlecode.com/svn/trunk/html5.js</script> 
<![endif]--> 
</head> 
<body> 
<div class="container"> 
    <div class="row" style="margin:15px 0;"> 
     <h1 class="style1">新世紀麥塊伺服器列表</h1> 
     <p class="style1">Copyright © 2016 by Simonchan. All rights reserved. 
    <p>  </div> 
    <div class="row"> 
     <br><br><br><br> <center><a href="#" target="_blank" class="button button-raised button-primary button-pill">登錄伺服器</a> 
      <a href="#" target="_blank" class="button button-raised button-pill button-inverse">修改伺服器</a> 
      <br><br> 
      <span class="style2"><b>列表每10分鐘自動刷新一次</b></span><br> 
      <br> 
      <table class="table table-bordered table-striped"> 
      <thead> 
       <tr> 
        <th bgcolor="#FFFFFF" class="status">狀態</th> 
        <th bgcolor="#FFFFFF" class="motd">伺服器名字</th> 
        <th bgcolor="#FFFFFF" class="v">遊戲版本</th> 
        <th bgcolor="#FFFFFF" class="ip">伺服器ip</th> 
        <th bgcolor="#FFFFFF">伺服器簡介</th> 
        <th bgcolor="#FFFFFF">伺服器人數</th> 
        <th bgcolor="#FFFFFF">投票</th> 
       </tr> 
      </thead> 
      <tbody> 
       <?php foreach($servers as $server): ?> 
       <?php $stats = \Minecraft\Stats::retrieve(new \Minecraft\Server($server)); ?> 
       <tr> 
        <td bgcolor="#FFFFFF"> 
         <?php if($stats->is_online): ?> 
         <span class="badge badge-success"><i class="icon-ok icon-white"></i></span> 
         <?php else: ?> 
         <span class="badge badge-important"><i class="icon-remove icon-white"></i></span> 
         <?php endif; ?>      </td> 
        <td bgcolor="#FFFFFF" class="motd"> 
        <?php 
         $sql = mysql_fetch_assoc(mysql_query("SELECT * FROM `ncsv_svl`.`server_list` where ip = '".$server."'")); 
         echo $sql[motd] 
        ?> 
        </td> 
        <td bgcolor="#FFFFFF" class="v"><code><?php echo $stats->game_version ?></code> 
        <td bgcolor="#FFFFFF" class="ip"><code><?php echo $server; ?></code> 
        <td bgcolor="#FFFFFF">有待開放</td> 
        <td bgcolor="#FFFFFF"><?php printf('%u/%u', $stats->online_players, $stats->max_players); ?></td> 
        <td bgcolor="#FFFFFF"><a href="http://f.ncsv.tw/" target="_blank" class="button button-3d button-action button-circle button-jumbo"><i class="fa fa-thumbs-up"></i></a></td> 
       </tr> 
       <?php unset($stats); ?> 
       <?php endforeach; ?> 
      </tbody> 
     </table> 
    </div> 
</div> 
</body> 
</html> 

status.php

<?php 

namespace Minecraft; 

class Stats { 

public static function retrieve(Server $server) { 

    $socket = stream_socket_client(sprintf('tcp://%s:%u', $server->getHostname(), $server->getPort()), $errno, $errstr, 1); 

    if (!$socket) { 
     throw new StatsException("Could not connect to the Minecraft server."); 
    } 

    fwrite($socket, "\xfe\x01"); 
    $data = fread($socket, 2048); 
    fclose($socket); 

    $stats = new \stdClass; 

    // Is this a disconnect with the ping? 
    if ($data == false AND substr($data, 0, 1) != "\xFF") { 
     $stats->is_online = false; 
     return $stats; 
    } 

    $data = substr($data, 9); 
    $data = mb_convert_encoding($data, 'auto', 'UCS-2'); 
    $data = explode("\x00", $data); 

    $stats->is_online = true; 
    list($stats->protocol_version, $stats->game_version, $stats->motd, $stats->unkwon, $stats->online_players, $stats->max_players) = $data; 

    return $stats; 
    var_dump($stats); 
} 

} 

MySQLデータ

enter image description here

statu s.php GET Minecraftのサーバーに対してpingを実行形式

$servers = array(
"s.nerd.nu", 
"p.nerd.nu", 
"hardcore.hcsmp.com", 
"theverge.game.nfoservers.com:25565", 
); 
+1

[参照方法](http://stackoverflow.com/help/how-to-ask)を参照し、関連するコード、エラーメッセージ、および必要な入出力データを含めてください。 – cyroxis

+0

あなたは何が必要なのかわからないが、jsonで何かをしてから、PHP [json_encode](http://php.net/manual/en/function.json-encode.php)と[json_decode ](http://php.net/manual/en/function.json-decode.php) – user3284463

答えて

0
while($row = $result->fetch_array()) { 
    $data['fieldname1'][] = $row['fieldname1']; 
    $data['fieldname2'][] = $row['fieldname2']; 
} 
$json_var = json_encode($data); 

あなたはその後、上述のようにJSON形式として配列変数とエンコードに格納テーブルから必要な詳細情報を取得する必要があります。

+0

がフォーマットできますか? – Simonchan

+0

理解できませんでした。 –

+0

アレイが必要なフォーマット "s.nerd.nu"、 – Simonchan

関連する問題