1. simplified the code. (In fact, some unnecessary variable definitions are removed)
2. The information retrieved from INTERNIC is too simple. Further query is performed based on the whois server in INTERNIC feedback. For example, YAHOO has more detailed information on whois.networksolutions.com.
Class whois {
Var $ use_cache = 1;
Var $ FROM_CACHE = 0;
Var $ cache_dir = "./"; // according to your system settings
Var $ port = 43;
Var $ maxlen= 100;
// If You Want To retry automatically after the connection fails,
// Set the number of retries $ MAX_RETRIES
Var $ MAX_RETRIES = 0;
Var $ SLEEP_VAL = 1;
Var $ RETRY = 0;
Var $ FOUND = 0; // No results for the query, and the number of times is 0
Var $ ERROR = 0; // number of errors in the Query Process
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 value 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 the unit of behavior
// Query international domain names
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 domestic domain names
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 the 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"
";
}
?>