БлогNot. Проверка доступности сервера на PHP+JQuery

Проверка доступности сервера на PHP+JQuery

В этой статье мы проверяли доступность сервера, пользуясь классическими возможностями PHP. Теперь посмотрим, как решить эту задачу с помощью фреймворка JQuery. Предполагается, что к index.html подключены из текущей папки jquery.js и jquery.form.js, их легко найти по ссылкам. В простейшем случае код файла index.html может быть таким:

<html>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<head>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="jquery.form.js"></script>
</head>

<body>
 <!-- форма ввода - без тега form, во избежание попыток отправить данные по GET -->
 <input id="site_name"></input>
 <button onclick="onClick()">Проверить</button>

 <!-- клиентское приложение (JQuery) -->
 <script type="text/javascript">
  var RequestIsSending=false;
  function changeCursor (type) {
   if (type) {
    $("body").css("cursor","wait"); //Курсор ожидания для элементов
    $("button").css("cursor","wait");
    $("input").css("cursor","wait");
   }
   else {
    $("body").css("cursor","default"); //Вернуть курсор по умолчанию
    $("button").css("cursor","default");
    $("input").css("cursor","text");
   }
  }
  function onClick() { //Клик по кнопке
   if (!RequestIsSending) {
    RequestIsSending=true;
    changeCursor(true);
    $.ajax ({
     type:'POST',
     url:'test.php',
     data: ({ val:$("#site_name").val()	}),
     complete: function (response) {
      RequestIsSending=false;	
      console.log(response);
      alert (response.responseText.substring(response.responseText.lastIndexOf(">")+1,response.responseText.length));
      changeCursor(false);
     },
     error: function () {
      alert("Bad response from server script!");
     }
    });
    $("#site_name").focus();
   }
  }

  $('#site_name').keydown(function(event) { //Отправка запроса по Enter
   if (!RequestIsSending) {
    if (event.keyCode == 13) {
     onClick();
    }
   }
   else return false;
  });

</script>

</body></html>

Серверный скрипт test.php расположен в той же папке, что и index.html, он проверяет корректность адреса несложным регулярным выражением, затем доступность хоста методом file_get_contents и возвращает результат стандартным echo:

<?php 
 $reg_exp="/^(http[s]?:(\/\/))?(www\.)*([\-\w\dА-Яа-яёЁ]+\.)+([\w|А-Яа-яёЁ]){2,6}|$/";
 $_POST["val"]=trim($_POST["val"]);
 $_POST["val"]=str_replace("\\","/",$_POST["val"]);
 preg_match($reg_exp,$_POST["val"],$match);
 if ($match[0]){
  if (($match[1]!="http://") && ($match[1]!="https://")) $_POST["val"]="http://".$_POST["val"];
  if (file_get_contents($_POST["val"])) echo "Данный сервер отвечает";
  else echo "Данный сервер не отвечает";
 }
 else echo "Адрес не распознан как допустимый";
?>

Предполагается, что оба файла - в Юникоде без BOM (UTF-8), index.html вызван по протоколу http://, а не file:// (то есть, размещён на локальном хосте, а не открыт в браузере как файл).

23.11.2015, 17:05 [6702 просмотра]


теги: учебное php jquery

К этой статье пока нет комментариев, Ваш будет первым