Главная страница  /  Занятия  /  #18  /  Разработать веб-интерфейс к whois-сервису с использованием jQuery

Разработать веб-интерфейс к whois-сервису с использованием jQuery

Задание:

Есть html-документ:
 <!DOCTYPE html>
    
 <html lang="ru">
    
  <head>
   <meta charset="utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Веб-интерфейс к whois-сервису с использованием jQuery</title>
   <link rel="stylesheet" href="styles.css">
   <script src="/js/jquery-3.6.0.min.js"></script>
   <script src="scripts.js"></script>
  </head>
    
  <body>
   <h1>Whois–сервис</h3>
   <div></div>
   <input type="text" placeholder="Домен в зоне .RU">
   <button>Отправить запрос</button>
  </body>
    
 </html>

и стилевая разметка:
 h1						{ margin: 0px 0px 16px 0px; font-family: Arial, Tahoma, Verdana; }
 div						{ border: 1px solid #e0e0e0; width: 100%; min-height: 160px; margin-bottom: 26px; padding: 10px; font-family: Arial, Tahoma, Verdana; font-size: 16px; }
 input[type=text]				{ display: block; float: left; width: 200px; height: 30px; box-sizing: border-box; border: 1px solid #e0e0e0; font-family: Arial, Tahoma, Verdana; font-size: 16px; outline: 0; color: #404040; padding: 4px; margin-right: 10px; }
 input[type=text]::placeholder			{ color: #d0d0d0; font-size: 14px; }
 input[type=text]:focus::placeholder		{ opacity: 0; }
 button						{ display: block; width: 150px; height: 30px; border: 1px solid #d0d0d0; background-color: #f0f0f0; color: #000000; outline: none; }

Используя JavaScript-библиотеку jQuery, необходимо написать скрипт (scripts.js), проверяющий соответствие указанного доменного имени правилам записи доменных имен в зоне .RU, отправляющий асинхронный AJAX-запрос методом GET серверному скрипту (scripts.php) и выводящий полученный от сервера ответ. Серверный скрипт (scripts.php) должен отправлять запрос об указанном домене на whois-сервер whois.tcinet.ru, обслуживающий доменную зону .RU, получать ответ и возвращать его клиентскому скрипту (scripts.js). Для соединения серверного скрипта с whois-сервером можно использовать функцию fsockopen, информацию о которой и примеры использования можно посмотреть здесь.

Посмотреть решение

JS-скрипты (scripts.js):

   $(window).on('load', function()
   {
    $('button').click(function() { checkDomainName(); });
    $('input').keydown(function(e) { if(e.keyCode == 13) checkDomainName(); });
   });
   
   function checkDomainName()
   {
    if(!$('input').val())
    {
     alert('Укажите доменное имя!');
     return;
    }
    if(/^[a-zA-Z0-9]([a-zA-Z0-9]|\-(?!\-)){0,61}[a-zA-Z0-9]\.ru$/i.test($('input').val()))
    {
     $.get('scripts.php', { domain : $('input').val() }, function(data) { $('div').html(data); });
     return;
    }
    else
    {
     alert('Некорректное имя домена');
    }
   }

PHP-скрипты (scripts.php):

   <?
    header('Content-Type: text/plain; charset=utf-8');
   
    $whoisServer = 'whois.tcinet.ru';
    $whoisSocket = fsockopen($whoisServer, 43);
    if($whoisSocket)
    {
     fputs($whoisSocket, $_GET['domain'].PHP_EOL);
     $answerText = '';
     while(!feof($whoisSocket))
     {
      $currentText = fgets($whoisSocket, 128);
      if(!preg_match('/^(\%|\n|L)/', $currentText)) $answerText .= $currentText.'<br>';
     }
     fclose($whoisSocket);
     if(preg_match('/^No entries found/', $answerText)) $answerText = 'Информация по&nbsp;домену <b>'.$_GET['domain'].'</b> не&nbsp;найдена';
     echo $answerText;
    }
   ?>

Результат:

Результат выполнения задания можно посмотреть здесь.