WHOIS class in php (modified version)

WBOY
Release: 2016-08-08 09:34:04
Original
1110 people have browsed it

1. Simplified the code. (In fact, it just removes the definition of some unnecessary variables)
2. Since the information retrieved from INTERNIC is too simple, conduct further query based on the WHOIS SERVER in the information fed back by INTERNIC. For example, YAHOO has more detailed information at whois.networksolutions.com.

class whois {

var $use_cache = 1;
var $FROM_CACHE=0;
var $cache_dir = "./"; // Set it according to your system

var $port = 43;
var $MAXLEN = 100;

// If you want to automatically retry after connection failure,
//Set the number of retries $MAX_RETRIES
var $MAX_RETRIES = 0;
var $SLEEP_VAL = 1;
var $RETRY = 0;

var $FOUND = 0; // The query has no results and the secondary value is 0
var $ERROR = 0; // Number of errors during query
var $DATA_MIN = 8; // We should get at least 8 bytes of data
var $DATA_COUNT = 0;

var $WHOIS_SERVER;
var $NEW_WHOIS;
var $FURTHER_INFO = 0;


// Open the SOCKET connection with WHOIS SERVER
// The default is whois.internic.net
function connect ($server) {
$this->RETRY=0;
while($this->RETRY <= $this->MAX_RETRIES):
$ptr = fsockopen($server, $this->port);
if($ptr>0):
$this->ERROR=0; // just in case we're on a retry
return($ptr);
else:
$this->ERROR++;
$this->RETRY++;
sleep($this->SLEEP_VAL);
endif;
endwhile;
}

// Get simple query results and put them into an array in row units
// International domain name query
function rawlookup ($query, $server) {

if(!$query):
return( "");
endif;

$ptr=$this->connect($server);

if($ptr):
if(!ereg($query, "n$")):
$query .= "n";
endif;
fputs($ptr, "$query");
$i=0;
$this->FOUND=1;
while(!feof($ptr)):
$array[$i]=fgets($ptr,$this->MAXLEN);
$this->DATA_COUNT+=strlen(chop($array[$i]));
if(eregi( "No match for", $array[$i]) || eregi ("No entries found", $array[$i])):
$this->FOUND=0;
elseif(eregi( "WHOIS database is down",$array[$i])):
$this->ERROR++;
$this->FOUND=0;
elseif(eregi( "Please wait a while and try again",$array[$i])):
$this->ERROR++;
$this->FOUND=0;
break;
endif;
if(eregi("Whois Server:",$array[$i])):
$this->NEW_WHOIS=trim(substr(trim($array[$i]),(strlen(trim($array[$i]))-13)*(-1)));
$this->FURTHER_INFO=1;
endif;
$i++;
endwhile;

fclose($ptr);

if($this->DATA_COUNT>$this->DATA_MIN):
return($array);
else:
$this->ERROR++;
endif;
else:
$this->ERROR++;
endif;
}


// Domestic domain name query
function cnrawlookup ($query, $server) {
if(!$query):
return( "");
endif;

$ptr=$this->connect($server);
if($ptr):
if(!ereg($query, "n$")):
$query .= "n";
endif;
fputs($ptr, "$query");
$i=0;
$this->FOUND=1;
while(!feof($ptr)):
$array[$i]=fgets($ptr,$this->MAXLEN);
$this->DATA_COUNT+=strlen(chop($array[$i]));
if(eregi( "No match for", $array[$i]) || eregi ("No entries found", $array[$i])):
$this->FOUND=0;
elseif(eregi( "WHOIS database is down",$array[$i])):
$this->ERROR++;
$this->FOUND=0;
elseif(eregi( "Please wait a while and try again",$array[$i])):
$this->ERROR++;
$this->FOUND=0;
break;
endif;
$i++;
endwhile;
fclose($ptr);

if($this->DATA_COUNT>$this->DATA_MIN):
return($array);
else:
$this->ERROR++;  
endif;  
else:  
$this->ERROR++;  
endif;  
}  
};



$myWHOIS=new whois();

$thisname=$servername.$domainname;
// 根据国内域名或国际域名选择WHOIS SERVER
if (ereg(".cn$",$thisname))
{
$myWHOIS->WHOIS_SERVER="whois.cnnic.net.cn";
$array=$myWHOIS->cnrawlookup($thisname,$myWHOIS->WHOIS_SERVER);
}
else
{
$myWHOIS->WHOIS_SERVER="whois.internic.net";
//$myWHOIS->WHOIS_SERVER="whois.networksolutions.com";
$array=$myWHOIS->rawlookup($thisname,$myWHOIS->WHOIS_SERVER);
}



echo "
".$thisname."
";
echo "";
$x=0;
while ($x {
echo " $x ";
echo " $array[$x] ";
$x++;
}
echo "  
";

if (!ereg(".cn$",$thisname))
{
echo "
Furth infomation
";
$array_further=$myWHOIS->rawlookup($thisname,$myWHOIS->NEW_WHOIS);

echo "";
$x=0;
while ($x {
echo " $x ";
echo " $array_further[$x] ";
$x++;
}
echo "  
";
}

?>   

以上就介绍了php中的WHOIS类(修改版),包括了WHOIS类方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template