2015-03-11 4 views
1

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

EDIT: Да, я знаю, что этот код 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"; 
    [email protected]($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(); 
?> 
+0

Эхо значение '$ serwer' - дважды проверьте его, что вы ожидаете. –

+1

Также удалите @ перед 'fsockopen' - он будет подавлять любые сообщения об ошибках, которые вы получаете здесь. –

+0

Спасибо за отличный совет. Я повторил это, и веб-сайт показывает мне адреса конкретных серверов, таких как http: // www .... так что именно то, что я хотел, и кажется правильным – LetMeLearn123

ответ

2

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

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

Голосовать надо больше репутации, плохо делайте это так же быстро, как возможно: D – LetMeLearn123