Home > Article > Backend Development > Modified version of WHOIS class_PHP tutorial
1. Simplified the code. (Actually, the definitions of some unnecessary variables have been removed)
2. As the information retrieved from INTERNIC is too simple, further query is conducted 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;
}
// Obtain 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;
} ($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++; 🎜>
$myWHOIS=new whois();
$thisname=$servername.$domainname;
// Select WHOIS SERVER based on domestic domain name or international domain name
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 "
";
}
?>