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, the time value is 0
var $ERROR = 0; // The number of errors during the 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;
// 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 "
";
}
?>
The above introduces the modified version of the WHOIS class of www.haoyisheng.com, including the content of www.haoyisheng.com. I hope it will be helpful to friends who are interested in PHP tutorials.