WHOIS (произносится как «Кто есть») — это протокол запросов и ответов, который обычно используется для поиска деталей интернет-ресурсов, таких как доменное имя, блок IP-адресов или автономная система, а также другой важной информации. База данных сервера протокола WHOIS хранит и возвращает информацию в удобочитаемом формате. Информация о текущем регистраторе домена, информации о регистранте, дате истечения срока действия и т. д.
Поскольку в этом руководстве мы рассмотрим живой пример создания сценария поиска домена WHOIS с помощью PHP, основные файлы для этого примера приведены ниже.
Сначала мы создадим файл index.php и разработаем HTML-форму с полем для ввода доменного имени и кнопкой поиска, чтобы получить информацию WHOIS домена при отправке формы.
<div class="container">
<label class="text-info">
<?php if($message) { ?>
<span class="text-danger"><strong><?php echo $message; ?></strong></span>
<?php } ?>
</label>
<div class="row">
<form name="form" class="form"
action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<div class="col-md-6">
<div class="form-group">
<input type="text"
name="domain"
id="domain" class="form-control" value="<?php echo $domain; ?>"
placeholder="Enter domain name">
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<button type="submit"
class="btn btn-info btn-md"><i class="fa fa-search"></i> WHOIS</button>
</div>
</div>
</form>
</div>
</div>
После ввода доменного имени и отправки формы мы получим доменное имя без http или www и перейдем к функции validateDomain() для проверки действительного доменного имени. Затем мы вызовем функцию LookUpDomain() , чтобы получить информацию WHOIS домена, и сохраним ее в переменной $result для ее отображения.
if(isset($_POST['domain'])){
$domain = $_POST['domain'];
$domain = trim($domain);
if(substr(strtolower($domain), 0, 7) == "http://") $domain = substr($domain, 7);
if(substr(strtolower($domain), 0, 8) == "https://") $domain = substr($domain, 8);
if(substr(strtolower($domain), 0, 4) == "www.") $domain = substr($domain, 4);
if(validateDomain($domain)) {
$result = lookUpDomain($domain);
} else {
$message = "Invalid Input!";
}
}
Мы будем отображать информацию WHOIS домена, используя переменную результата.
<?php
if($result) {
echo "<pre>\n" . $result . "\n</pre>\n";
}
?>
Мы создадим функцию LookUpDomain() и проверим наличие сервера WHOIS домена, используя массив $ whoIsServers , в котором хранится имя сервера WHOIS. Если сервер WHOIS домена существует, мы вызываем функцию getWhoisServerDetails() , чтобы отправить запрос серверу WHOIS для получения сведений о домене.
function lookUpDomain($domain){
global $whoIsServers;
$domainParts = explode(".", $domain);
$tld = strtolower(array_pop($domainParts));
$whoIsServer = $whoIsServers[$tld];
if(!$whoIsServer) {
return "Error: No appropriate Whois server found for $domain domain!";
}
$whoIsResult = getWhoisServerDetails($whoIsServer, $domain);
if(!$whoIsResult) {
return "Error: No results retrieved from $whoIsServer server for $domain domain!";
} else {
while(strpos($whoIsResult, "Whois Server:") !== FALSE){
preg_match("/Whois Server: (.*)/", $whoIsResult, $matches);
$secondary = $matches[1];
if($secondary) {
$whoIsResult = getWhoisServerDetails($secondary, $domain);
$whoIsServer = $secondary;
}
}
}
return "$domain domain lookup results from $whoIsServer server:\n\n" . $whoIsResult;
}
В файле function.php мы создадим функцию getWhoisServerDetails() , чтобы сделать запрос к WHOIS-серверу и получить информацию WHOIS.
function getWhoisServerDetails($whoIsServer, $domain) {
$port = 43;
$timeout = 10;
$whoIsInfo = @fsockopen($whoIsServer, $port, $errno, $errstr, $timeout) or
die("Socket Error " . $errno . " - " . $errstr);
fputs($whoIsInfo, $domain . "\r\n");
$output = "";
while(!feof($whoIsInfo)){
$output .= fgets($whoIsInfo);
}
fclose($whoIsInfo);
$whosIsResults = "";
if((strpos(strtolower($output), "error") === FALSE)
&& (strpos(strtolower($output), "not allocated") === FALSE)) {
$whoIsRecords = explode("\n", $output);
foreach($whoIsRecords as $whoIsRecord) {
$whoIsRecord = trim($whoIsRecord);
if(($whoIsRecord != '') && ($whoIsRecord{0} != '#') && ($whoIsRecord{0} != '%')) {
$whosIsResults .= $whoIsRecord."\n";
}
}
}
return $whosIsResults;
}
Проверяем работу скрипта на примере домена KOTOFF.net
Перед публикацией, советую ознакомится с правилами!
Нашли ошибку?
Вы можете сообщить об этом администрации.
Выделив текст нажмите CTRL+Enter