Изменение фона div в PHP с помощью инструкций if

#php #html #css

#php #HTML #css

Вопрос:

Я создаю виджет, который позволяет мне знать, когда сервер подключен к сети или оффлайн. Это работает, мне нужно сделать так, чтобы при подключении он был зеленым, а при отключении — красным. вот мой код на данный момент:

 <html>
<head>
<title>Server Widget</title>
<style>
.server-widget {
  position:absolute;
  width:5em;
  text-align:center;
  background:#333;
  border-radius:5px;
  color:#fff;
  font-family: arial;
  padding:10px;
  top:20px; left: 20px;
}
</style>
</head>
<body>
<div class="server-widget">

<?php 

$ip = "google.com";
$port = "80";
$sock = @fsockopen( $ip, $port, $num, $error, 2 );

   if( !$sock ) {

   echo( "Offline" );

   }

   if( $sock ) {

   echo( "Online" );

   fclose($sock);

   }

   ?>
   </div>
</body>
</html>
  

Это просто говорит мне, что он подключен к сети или оффлайн. Я попытался использовать оператор if, чтобы сказать, что если сервер подключен к Сети, то цвет фона зеленый, иначе будет красный. Когда сервер был подключен к Сети, это работало. Но как только это был автономный сервер, виджет по-прежнему оставался зеленым.
Спасибо.

Комментарии:

1. это выполняется один раз, проверяется один раз, пока вы не перезагрузите страницу, вы не узнаете, изменился ли статус разорванного

2. Извините, дело не в этом. Когда я подключу автономный сервер, он останется зеленым. <div class=»server-widget» style=» <?php if ($ip == $sock) { echo «background-color:#1ec033;»; } else { echo «background-color: red;»; } ?> «>

Ответ №1:

Чтобы реализовать раскраску на основе вашего автономного статуса, просто сделайте две вещи:

I. В блоке style извлеките атрибут color из блока .server-widget и укажите его отдельно, вот так:

 .offline {color: red}
.online {color: green}
  

II. После этого все, что нужно сделать, это установить атрибуты класса offline и online с помощью php. Для этого замените код вашего блока div следующим образом:

 <div class="server-widget <?php 
$ip = "google.com";
$port = "80";
$sock = @fsockopen( $ip, $port, $num, $error, 2 );

   if( !$sock ) {

   echo( "Offline" );

   }

   if( $sock ) {

   echo( "Online" );

   fclose($sock);

   }

   ?>">
   </div>
  

Это поместит дополнительный класс в ваш тег в автономном режиме или онлайн и, таким образом, заставит раскраску работать.

Комментарии:

1. Возникла некоторая проблема с форматированием. Я обновил сейчас.

2. когда я меняю URL на автономный, это не меняется, пока я не обновлю страницу. Тем не менее, это работает, спасибо. есть ли способ, которым я мог бы заставить его пинговать сервер и изменять, когда сервер переходит в автономный режим?

3. @user3486886 Для этого вам нужно изменить стратегию и использовать ajax. В этом случае вы можете удалить отсюда блок <?=php?> и вместо этого выполнить вызов jQuery ajax для серверной части внутри таймера. Затем серверный php должен отобразить цвет в формате json, чтобы javascript мог обновить класс div с помощью методов jQuery addClass() или removeClass(). Ссылка на jQuery api является хорошей отправной точкой: api.jquery.com