-6

テストとして、Minecraft サーバーから自分の Web ページにデータを入力しようとしています。コードは次のとおりです。

<?php $host = "hub.cobalt-mc.com";
$port = 25565;
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$connected = socket_connect($socket, $host, $port);
if ($connected) {
$ping_start = microtime(true);
socket_send($socket, "\xFE", 1, 0);
$data = "";
$result = socket_recv($socket, &$data, 1024, 0);$ping_end = microtime(true);
socket_close($socket);

if ($result != false && substr($data, 0, 1) == "\xFF") {
$info = explode("\xA7", mb_convert_encoding(substr($data,1), "iso-8859-1","utf-16be"));
$serverName = substr($info[0], 1);
$playersOnline = $info[1];
$playersMax = $info[2];
$ping = round(($ping_end - $ping_start) * 1000);
echo     "<table class=\"table table-hover\">
<th>Server Address</th>
<th>Status</th>
<th>Rank</th>
<th>Total DP</th>

<tr>
<td>$host:$ip</td>
if (($ping > '1000') || ($ping < '0')) {
echo "<td><span class=\"label label-success\">Online!</span></td>";
}
else {
echo "<td><span class=\"label label-success\">Online!</span></td>";
}
<td></td>
<td></td>
</tr>

<tr>
<td>$host:$ip</td>
<td></td>
<td></td>
<td></td>
</tr>
</table>";
                            }

 else {
 echo "<span style=\"color:#FF0000\">Error: </span>Failed to receive data";
 }
 } else {
 echo "<span style=\"color:#FF0000\">Error: </span>Failed to send data";
 }?>

エラーが発生します:

Parse error: syntax error, unexpected '>' in /home/mctronco/public_html/leaderboards/serverping.php on line 27

コードに何か問題がありますか?

4

3 に答える 3

0

コードには複数の問題がありますが、重要な問題を指摘します。文字列またはエコーの途中に純粋なPHPを配置することはできません。

古いコード

<tr>
<td>$host:$ip</td>
if (($ping > '1000') || ($ping < '0')) {
echo "<td><span class=\"label label-success\">Online!</span></td>";
}
else {
echo "<td><span class=\"label label-success\">Online!</span></td>";
}
<td></td>

新しいコード

<tr>
<td>{$host}:{$ip}</td>";

if (($ping > '1000') || ($ping < '0')) {
echo "<td><span class=\"label label-success\">Online!</span></td>";
}
else {
echo "<td><span class=\"label label-success\">Online!</span></td>";
}

echo "
<td></td>

エコーの外部でifステートメントを実行し、その結果を変数に格納してから、その変数をエコー内に配置するとよいでしょう。二重引用符の中にいる間(エコーのように)、PHPに変数の内容を表示させることはできますが、ステートメントは実行されません。

于 2013-02-01T19:44:52.567 に答える
0

行の直後に開始するエコーは$ping = round(...、ifステートメントの前で終了しません...if途中でドロップすることはできませんecho

読む行:

<td>$host:$ip</td>

次のようにする必要があります。

<td>$host:$ip</td>";

次に、ifステートメントの後に別のエコーを行う必要があります...

そのコードには、あなたが望むことをするのを妨げる無数の問題があるようです...

コメントで述べたように、適切なコードのフォーマットはこれらのエラーの解決に大いに役立ちます...コードを色付けするエディターを使用すると、このようなエラーが飛び出します...

于 2013-02-01T19:37:02.990 に答える
0

エラーメッセージは27行目を指しています:

Parse error: syntax error, unexpected '>' in /home/mctronco/public_html/leaderboards/serverping.php on line 27

そのため、どの特定の行に問題があるかは明確ではありません。したがって、コーディングがかなり変更されているため、次のようにすべてを変更することをお勧めします。これは私の理想ではありませんが、うまくいくはずです。

if ($result != false && substr($data, 0, 1) == "\xFF") {
$info = explode("\xA7", mb_convert_encoding(substr($data,1), "iso-8859-1","utf-16be"));
$serverName = substr($info[0], 1);
$playersOnline = $info[1];
$playersMax = $info[2];
$ping = round(($ping_end - $ping_start) * 1000);

echo "<table class=\"table table-hover\">";
echo "<th>Server Address</th>";
echo "<th>Status</th>";
echo "<th>Rank</th>";
echo "<th>Total DP</th>";

echo "<tr>";
echo "<td>$host:$ip</td>";
if (($ping > '1000') || ($ping < '0')) {
echo "<td><span class=\"label label-success\">Online!</span></td>";
}
else {
echo "<td><span class=\"label label-success\">Online!</span></td>";
}
echo "<td></td>";
echo "<td></td>";
echo "</tr>";

echo "<tr>";
echo "<td>".$host.":".$ip."</td>";
echo "<td></td>";
echo "<td></td>";
echo "<td></td>";
echo "</tr>";
echo "</table>";
                            }

 else {
 echo "<span style=\"color:#FF0000\">Error: </span>Failed to receive data";
 }
 } else {
 echo "<span style=\"color:#FF0000\">Error: </span>Failed to send data";
 }

?>
于 2013-02-01T19:38:27.617 に答える