#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