SoFunction
Updated on 2025-04-09

Use PHP to query the domain name status whois class


<?
class SearchDomain
{
 var $domain="";
 function SetDomain($udomain)
 {
 $this->domain = $udomain;
 }
 //
// Get whois and analyze the domain name status
// ok Not registered
// Non-null value Expiration time
// Number value unknown
 //
 function GetInfo()
 {
 /*
 $dinfo = trim($this->GetWhois());
 if($dinfo=="") return "";
 if(eregi("no match",$dinfo)) return "ok";
 //return $rs;
 */
 $wl = "";
 $w_server = $this->GetServer();
 if($w_server=="") return "";
 $fp = fsockopen($w_server, 43, $errno, $errstr, 30);
 if(!$fp)
 {
 echo $errstr;
 return "";
 }
 $out = $this->domain."\r\n";
 $out .= "Connection: Close\r\n\r\n";
 fputs($fp, $out);
 while (!feof($fp))
 {
 $wl = fgets($fp, 255);
 if(eregi("no match",$wl))
 {
 fclose($fp);
 return "ok";
 }
 if(eregi("Expiration Date",$wl))
 {
 $lines = split(":",$wl);
 $t = trim($lines[1]);
 $ts = split(" ",$t);
 $t = $ts[0];
 if(ereg("[^0-9-]",$t))
 {
 $ts = split("-",$t);
 $t = $ts[2]."-".$this->MonthToNum($ts[1])."-".$ts[0];
 }
 fclose($fp);
 return $t;
 }
 }
 fclose($fp);
 return "";
 }
 //
//Get the entire whois information of the domain name
 //
 function GetWhois()
 {
 $wh = "";
 $w_server = $this->GetServer();
 if($w_server=="") return "";
 $fp = fsockopen($w_server, 43, $errno, $errstr, 30);
 if(!$fp)
 {
 echo $errstr;
 return "";
 }
 $out = $this->domain."\r\n";
 $out .= "Connection: Close\r\n\r\n";
 fputs($fp, $out);
 while (!feof($fp))
 {
 $wh .= nl2br(fgets($fp, 255));
 }
 fclose($fp);
 return $wh;
 }
 //
//Output status information of the current domain name
 //
 function PrintSta()
 {
 $rs = $this->GetInfo();
if($rs=="ok") echo $this->domain." Not registered!<br/>\r\n";
else if($rs=="") echo "Cannot query ".$this->domain." Status!<br/>\r\n";
else echo $this->domain.” Registered, expiration date: $rs<br/>\r\n";
 }
 //
//Get the whois query server
 //
 function GetServer()
 {
 $udomain=substr($this->domain,-3);
 switch($udomain)
 {
 case "com":
 $w_server="";
 break;
 case "net":
 $w_server="";
 break;
 case "org":
 $w_server="";
 break;
 case "nfo":
 $w_server="";
 break;
 case "biz":
 $w_server="";
 break;
 case ".cc":
 $w_server="";
 break;
 case "edu":
 $w_server="";
 break;
 case "gov":
 $w_server="";
 break;
 case ".cn":
 $w_server="";
 break;
 default:
 $w_server="";
 }
 return $w_server;
 }
 //
//The month in English is converted to numbers
 //
 function MonthToNum($m)
 {
 $m = strtolower($m);
 for($i=1;$i<=12;$i++)
 {
 $tt = mktime(0,0,0,$i+1,0,2005);
 if($m==strtolower(strftime("%b",$tt)))
 {
 if($i>9) return $i-1;
 else return "0".$i-1;
 }
 }
 }
}

$sd = new SearchDomain();
$sd->SetDomain("");

//Query whether the domain name is registered, it is equivalent to $sd->PrintSta();
$rs = $sd->GetInfo();
if($rs=="ok") echo $sd->domain." Not registered!<br/>\r\n";
else if($rs=="") echo "Cannot query ".$sd->domain." Status!<br/>\r\n";
else echo $sd->domain.” Registered, expiration date: $rs<br/>\r\n";

//Get detailed whois information about the domain name
//echo $sd->GetWhois();
?>