• 技术文章 >后端开发 >php教程

    用PHP查询域名状态whois的类_php基础

    2016-05-17 09:43:44原创449
    复制代码 代码如下:

    class SearchDomain
    {
    var $domain="";
    function SetDomain($udomain)
    {
    $this->domain = $udomain;
    }
    //
    // 获取whois并分析域名状态
    // ok 未被注册
    // 非空值 过期时间
    // 空值 未知
    //
    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 "";
    }
    //
    //获得域名的整个whois信息
    //
    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;
    }
    //
    //输出当前域名的状态信息
    //
    function PrintSta()
    {
    $rs = $this->GetInfo();
    if($rs=="ok") echo $this->domain." 未注册!
    \r\n";
    else if($rs=="") echo "无法查询 ".$this->domain." 状态!
    \r\n";
    else echo $this->domain." 已注册,到期时间:$rs
    \r\n";
    }
    //
    //获得 whois 查询服务器
    //
    function GetServer()
    {
    $udomain=substr($this->domain,-3);
    switch($udomain)
    {
    case "com":
    $w_server="whois.internic.net";
    break;
    case "net":
    $w_server="whois.internic.net";
    break;
    case "org":
    $w_server="whois.pir.org";
    break;
    case "nfo":
    $w_server="whois.afilias.info";
    break;
    case "biz":
    $w_server="whois.biz";
    break;
    case ".cc":
    $w_server="whois.nic.cc";
    break;
    case "edu":
    $w_server="whois.educause.net";
    break;
    case "gov":
    $w_server="whois.nic.gov";
    break;
    case ".cn":
    $w_server="whois.cnnic.net.cn";
    break;
    default:
    $w_server="";
    }
    return $w_server;
    }
    //
    //英语的月份转为数字
    //
    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("job-sky.com");

    //查询域名是否被注册,等价于 $sd->PrintSta();
    $rs = $sd->GetInfo();
    if($rs=="ok") echo $sd->domain." 未注册!
    \r\n";
    else if($rs=="") echo "无法查询 ".$sd->domain." 状态!
    \r\n";
    else echo $sd->domain." 已注册,到期时间:$rs
    \r\n";

    //获得域名的详细whois信息
    //echo $sd->GetWhois();
    ?>

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:smarty静态实验表明,网络上是错的~呵呵_php技巧 下一篇:文件系统基本操作类_php技巧
    20期PHP线上班

    相关文章推荐

    精选22门好课,价值3725元,开通VIP免费学习!• 使用PHP和AJAX的XML编程_PHP教程• php通用防注入程序 推荐_PHP教程• PHP项目开发中最常用的自定义函数整理_PHP教程• php cookis创建实现代码_PHP教程• 继续收藏一些PHP常用函数第1/2页_PHP教程
    1/1

    PHP中文网