Кодирование инструмента поиска домена - PullRequest
3 голосов
/ 17 февраля 2011

Я кодирую проверку домена и действительно завис на php. Это то, что я имею до сих пор:

<?php
set_time_limit(0);
ob_start();
$domain = $_GET['domain'];
########### Extensions to be checked
$extensions = array(
    '.com'      => array('whois.crsnic.net','No match for'),
    '.info'     => array('whois.afilias.net','NOT FOUND'),  
    '.net'      => array('whois.crsnic.net','No match for'),
    '.co.uk'    => array('whois.nic.uk','No match'),        
    '.nl'       => array('whois.domain-registry.nl','not a registered domain'),
    '.ca'       => array('whois.cira.ca', 'AVAIL'),
    '.name'     => array('whois.nic.name','No match'),
    '.ws'       => array('whois.website.ws','No Match'),
    '.be'       => array('whois.ripe.net','No entries'),
    '.org'      => array('whois.pir.org','NOT FOUND'),
    '.biz'      => array('whois.biz','Not found'),
    '.tv'       => array('whois.nic.tv', 'No match for'),
);
###########

if(isset($domain))
{
    $newdomain = str_replace(array('www.', 'http://'), NULL, $domain);
    $finaldomain = str_replace($extensions, NULL, $newdomain);

    if(strlen($finaldomain) > 0)
    {
        foreach($extensions as $extension => $who)
        {
            $buffer = NULL;

            $sock = fsockopen($who[0], 43) or die('Error Connecting To Server:' . $server);
            fputs($sock, $finaldomain.$extension . "\r\n");

                while( !feof($sock) )
                {
                    $buffer .= fgets($sock,128);
                }

            fclose($sock);

            if(eregi($who[1], $buffer))
            {
                echo '<h4 class="available"><span>Available</span>' . $finaldomain. '<b>' . $extension .'</b> is Available</h4>';
            }
            else
            {
                echo '<h4 class="taken"><span>Taken</span>' . $finaldomain . '<b>' .$extension .'</b> is Taken</h4>';
            }
            echo '<br />';  

            ob_flush();
            flush();
            sleep(0.3);

        }
    }
    else
    {
        echo 'Please enter the domain name';
    }
}
?>

Проблема, с которой я столкнулся, заключается в том, что я не знаю, как мне удалить расширение из переданного домена.

Затем, когда он возвращает результаты, я хочу, чтобы введенное ими расширение было первым в списке результатов.

Я новичок в php, но это нужно для моего проекта. Вся помощь оценена.

Спасибо Джо

Ответы [ 2 ]

1 голос
/ 17 февраля 2011

Вместо того чтобы иметь все эти серверы Whois для каждого TLD, вы можете просто запросить TLD.whois-servers.net.

Из Википедия :

whois-servers.net предоставляет псевдоним DNS записи (CNAME) для серверов TLD WHOIS формы .whois-servers.net. Утилита GNU WHOIS автоматически использует сервис whois-servers.net.

1 голос
/ 17 февраля 2011

Прежде всего, расширение называется доменом верхнего уровня (сокращенно TLD). Во-вторых, .co.uk не является доменом верхнего уровня, .uk является. Он также имеет другие субдомены, такие как .org.uk, .gov.uk и т. Д.

Теперь, чтобы вернуть расширение части имени файла / имени домена, вы можете использовать pathinfo :

$tld = pathinfo('helloworld.co.uk', PATHINFO_EXTENSION);
echo $tld;   // uk

Возможно, вам придется изменить ваш массив, чтобы удалить введенные вами точки заголовков, или просто:

$tld = '.' . pathinfo('helloworld.co.uk', PATHINFO_EXTENSION);
$whois_server = $extensions[$tld];
...