Глюк в скрипте Whois-сервиса, скрипт для получения информации о свободных и занятых доменах

Aleksey77777

Новичок
Помогите решить проблему. Вот скрипт для получения информации о свободных и занятых доменах. Он работает,но только с доменами 1го уровня (com, net, org,nfo,name), а домены с точкой (com.ua, org.ua, net.ua, in.ua) НЕ ХОЧЕТ!!! Как исправить это???
PHP:
<?php

class maxWhois{

    var $serverList;
    var $tr = 0;
    
function maxWhois(){   
        $this->serverList[0]['top']      = 'com';
	$this->serverList[0]['server']   = 'whois.crsnic.net';
	$this->serverList[0]['response'] = 'No match for';
	$this->serverList[0]['check']    = true;
	
	$this->serverList[1]['top']      = 'net';
	$this->serverList[1]['server']   = 'whois.crsnic.net';
	$this->serverList[1]['response'] = 'No match for';
	$this->serverList[1]['check']    = false;

	$this->serverList[2]['top']      = 'org';
	$this->serverList[2]['server']   = 'whois.publicinterestregistry.net';
	$this->serverList[2]['response'] = 'NOT FOUND';
	$this->serverList[2]['check']    = false;
	
	$this->serverList[3]['top']      = 'info';
	$this->serverList[3]['server']   = 'whois.afilias.net';
	$this->serverList[3]['response'] = 'NOT FOUND';
	$this->serverList[3]['check']    = false;
	
	$this->serverList[4]['top']      = 'name';
	$this->serverList[4]['server']   = 'whois.nic.name';
	$this->serverList[4]['response'] = 'No match';
	$this->serverList[4]['check']    = false;
	
	$this->serverList[5]['top']      = 'us';
	$this->serverList[5]['server']   = 'whois.nic.us';
	$this->serverList[5]['response'] = 'Not found:';
	$this->serverList[5]['check']    = false;

	$this->serverList[6]['top']      = 'biz';
	$this->serverList[6]['server']   = 'whois.neulevel.biz';
	$this->serverList[6]['response'] = 'Not found';
	$this->serverList[6]['check']    = false;
	
	$this->serverList[7]['top']      = 'ca';
	$this->serverList[7]['server']   = 'whois.cira.ca';
	$this->serverList[7]['response'] = 'AVAIL';
	$this->serverList[7]['check']    = false;

	$this->serverList[8]['top']      = 'tv';
	$this->serverList[8]['server']   = 'tvwhois.verisign-grs.com';
	$this->serverList[8]['response'] = 'No match for';
	$this->serverList[8]['check']    = false;
	
	$this->serverList[9]['top']      = 'co.uk';
	$this->serverList[9]['server']   = 'whois.nic.uk';
	$this->serverList[9]['response'] = 'No match for';
	$this->serverList[9]['check']    = false;
	
	$this->serverList[10]['top']      = 'me.uk';
	$this->serverList[10]['server']   = 'whois.nic.uk';
	$this->serverList[10]['response'] = 'No match for';
	$this->serverList[10]['check']    = false;

	$this->serverList[11]['top']      = 'org.uk';
	$this->serverList[11]['server']   = 'whois.nic.uk';
	$this->serverList[11]['response'] = 'No match for';
	$this->serverList[11]['check']    = false;
	
	$this->serverList[12]['top']      = 'cc';
	$this->serverList[12]['server']   = 'whois.nic.cc';
	$this->serverList[12]['response'] = 'No match for';
	$this->serverList[12]['check']    = false;
	
        $this->serverList[13]['top']      = 'mobi';
	$this->serverList[13]['server']   = 'whois.dotmobiregistry.net';
	$this->serverList[13]['response'] = 'NOT FOUND';
	$this->serverList[13]['check']    = false;
	
	$this->serverList[14]['top']      = 'bz';
	$this->serverList[14]['server']   = 'whois2.afilias-grs.net';
	$this->serverList[14]['response'] = 'NOT FOUND';
	$this->serverList[14]['check']    = false;
	
	$this->serverList[15]['top']      = 'su';
	$this->serverList[15]['server']   = 'whois.ripn.net';
	$this->serverList[15]['response'] = 'No entries found';
	$this->serverList[15]['check']    = false;
	
	$this->serverList[16]['top']      = 'ru';
	$this->serverList[16]['server']   = 'whois.ripn.net';
	$this->serverList[16]['response'] = 'No entries found';
	$this->serverList[16]['check']    = false;
		
	$this->serverList[17]['top']      = 'eu';
	$this->serverList[17]['server']   = 'eu.whois-servers.net';
	$this->serverList[17]['response'] = 'Status:    AVAILABLE';
	$this->serverList[17]['check']    = false;
	
	$this->serverList[18]['top']      = 'in';
	$this->serverList[18]['server']   = 'whois.inregistry.net';
	$this->serverList[18]['response'] = 'NOT FOUND';
	$this->serverList[18]['check']    = false;

	$this->serverList[19]['top']      = 'asia';
	$this->serverList[19]['server']   = 'whois.nic.asia';
	$this->serverList[19]['response'] = 'NOT FOUND';
	$this->serverList[19]['check']    = false;	
	
	
}

function showHeader(){
?>
    <div id="container">
        <div id="header"><div id="header_left"></div>
        <div id="header_main">Whois lookup</div><div id="header_right"></div></div>
        <div id="content">
<?php
}

function showWhoisForm(){
?>
            <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" >
				<table class="dtable2">
                <tr><th colspan="5">Enter a domain name:</th></tr>
				<tr><td colspan="5"><center>www.<input name="domain" type="text" size="35" /></center></td></tr>
                <tr><th colspan="5">Select an extension:</th></tr>
				<tr>
            <?php
            	$i = 0;
                foreach ($this->serverList as $value) {
                    if ($value['check'] == true) $checked=" checked ";
            		else $checked = " ";
            		
            		echo '<td><input type="checkbox" name="top_'.$value['top'].'"'.$checked.'/>.'.$value['top'].'</td>';
                    $i++;            		
            		if ($i > 4) {
            		    $i = 0;
            		    echo '</tr><tr>';
            		}
            	}
            	
            ?>				
				</tr>
				</table>
				<center><input type="submit" name="submitBtn" class="sbtn" value="Check" /></center>
            </form>
<?php
}

function showFooter(){
?>
        </div>
        
    </div>

<?php
}

function processWhois(){
    $this->showHeader();

    if (!isset($_POST['submitBtn'])){
        $this->showWhoisForm();
    } else {

        $domainName = (isset($_POST['domain'])) ? $_POST['domain'] : '';
        
       	for ($i = 0; $i < sizeof($this->serverList); $i++) {
       		$actTop = "top_".$this->serverList[$i]['top'];
       		$this->serverList[$i]['check'] = isset($_POST[$actTop]) ? true : false;
       	}

        // Check domains only if the base name is big enough
        if (strlen($domainName)>2){
            echo '<table class="dtable">';
            echo '<tr><th colspan="2">Result</th></tr>';
		
           	for ($i = 0; $i < sizeof($this->serverList); $i++) {
	       		if ($this->serverList[$i]['check']){
			     	$this->showDomainResult($domainName.".".$this->serverList[$i]['top'],
			     	                        $this->serverList[$i]['server'],
			     	                        $this->serverList[$i]['response']);
			    }
		    }
        
		    echo '</table>';
        }
        $this->showWhoisForm();
        
    }
    $this->showFooter();

}

function showDomainResult($domain,$server,$findText){
   if ($this->tr == 0){
       $this->tr = 1;
       $class = " class='tr2'";
   } else {
       $this->tr = 0;
       $class = "";
   }
   if ($this->checkDomain($domain,$server,$findText)){
      echo "<tr $class><td>$domain</td><td class='ava'>AVAILABLE</td></tr>";
   }
   else echo "<tr $class><td>$domain</td><td class='tak'>".'<a href="'."javascript:popUp('quick.php?d=$domain&s=$server')".'">TAKEN</a></td></tr>';
}

function checkDomain($domain,$server,$findText)
{
    $con = fsockopen($server, 43);
    if (!$con) return false;
        
    // Send the requested doman name
    fputs($con, $domain."\r\n");
 
    $response = ' :';
    while(!feof($con)) {
        $response .= fgets($con,128); 
    }

    fclose($con);
        
    // Check the response stream whether the domain is available
    if (strpos($response, $findText)){
        return true;
    }
    else {
        return false;   
    }
}

}
?>
 

fixxxer

К.О.
Партнер клуба
Если ты хочешь, чтобы тебе исправили этот скрипт, добро пожаловать в раздел "Работа".

Если ты хочешь разобраться самостоятельно, к твоим услугам прекрасная статья phpfaq.ru/debug; после прочтения и применения на практике оной мы с удовольствием ответим на _конкретные_ вопросы по возникшим проблемам.
 

tf

крылья рулят
а домены с точкой (com.ua, org.ua, net.ua, in.ua) НЕ ХОЧЕТ!!! Как исправить это
ну малодец что не хочет, ответь пожалосто сначало, с какой стати он должен показывать свободные поддомены на этих серверах?
мб ему что то необходимо?
 

Aleksey77777

Новичок
ну малодец что не хочет, ответь пожалосто сначало, с какой стати он должен показывать свободные поддомены на этих серверах?
мб ему что то необходимо?
Не именно на этих, а на всех с точкой (co.uk, me.uk, org.uk) !!! Я отредактировал их, это не проблема, а в пример привел изначальный вариант кода!
 

tf

крылья рулят
на вопрос не ответил
ну давай по другому, как можно узнать весь список поддоменов me.uk ?
 

Aleksey77777

Новичок
на вопрос не ответил
ну давай по другому, как можно узнать весь список поддоменов me.uk ?
Зачем весь список??? Вводишь нужный, ставишь флажок на me.uk или\и com.ua , кликаешь, и получаешь результат - теоретически, а на практике - страница обновляется с результатами всех доменов без точки, а те что с точкой... КОРЧЕ ВОТ: http://site-design.com.ua/domain/
 
Сверху