Проверка состояния сервера — онлайн / офлайн

У меня есть цикл, показывающий информацию о многих разных серверах из базы данных.
Теперь я пытаюсь написать, если они в сети или в автономном режиме.
Я попытался написать вручную IP-адрес и порт для srcipt, и он работает нормально. Однако, когда я попытался поместить таблицу в переменную, это показывает, что все в автономном режиме. Большинство из них используют порт 44405, так что пока я проверяю его вручную.

РЕДАКТИРОВАТЬ: да, я знаю, что этот код MySQL готов и ждет инъекции: D

<?php //-----loading servers to website-----
error_reporting(E_ALL);
ini_set('display_errors','1');

$connection = //deleted this part coz includes personal info :D$alldata = mysql_query("SELECT * FROM muonline ORDER BY id DESC;");
while ($loadservers = mysql_fetch_assoc($alldata)) {echo "<tr>";

echo '<td>';  //-----here starts the online/offline part of script-----

$serwer = $loadservers['serverAddress'];
$port="44405";
$socket=@fsockopen($serwer,$port,$errno,$errstr,2);

if($socket==true)
{
echo "<p>online</p>";
}else{
echo "<p>offline</p>";
}
echo '</td>';

//------- here is being loaded rest of info of the each server-----
echo "<td><p>" .$loadservers['serverName']."</p></td>";
echo "<td><p>". '<a href="' .$loadservers['serverAddress'].'"target="_blank"><p>'.$loadservers['serverAddress']. "</p></a>". "</td>";
echo "<td><p>" .$loadservers['serverExp']. "</p></td>";
echo "<td><p>" .$loadservers['serverDrop']. "</p></td>";
echo "<td><p>" .$loadservers['info']. "</p></td>";
echo "</tr>";
}

mysql_close();
?>

1

Решение

Вы пытаетесь использовать fsockopen с сервером, начинающимся с http://, Вам нужно будет проанализировать URL с помощью parse_urlизвлеките host часть URL и проверьте, используя это. Как это:

$parsedUrl = parse_url($loadservers['serverAddress']);
$socket = fsockopen($parsedUrl['host'],$port,$errno,$errstr,2);
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]