无数据库的详细域名查询程序PHP版(1)


Posted in PHP onOctober 09, 2006

文件一:index.php

<?php

echo "<!-- Powered by MWhois written by Matt Wilson <matt@mattsscripts.co.uk> -->\\n\";

/*
    #########################################################################################
    #                                                                                       #
    #  本域名查询系统由mydowns收集整理汉化,汉化归把握时间网站所有(http://www.85time.com)   #
    #  该程序是2001年5月18日发布的最新版本,本站将对此程序继续进行修改完善,敬请关注本站!  #
    #  该程序可以查询域名所有者的详细资料信息,现提供9个类型的域名以供查询!                #
    #  演示地址:http://www.85time.com/whois                                                #
    #  源程序打包下载:http://www.85time.com/mydowns/mydowns.php?id=378                     #
    #  把握时间网站提供PHP、ASP、CGI、HTML、JSP等源程序、电子教材、文章资料                 #
    #  把握时间网站http://www.85time.com  把握时间论坛http://ww.85time.ent                  #
    #  请保留此信息,谢谢!                                                                 #
    #                                                                                       #
    #########################################################################################
    MWhois - a Whois lookup script written in PHP and Perl
    Copyright (C) 2000 Matt Wilson

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

if(!isset($use_global_templates))
    $use_global_templates = 1;    // whether to use the global templates

$template_header = \"gheader.tml\";    // the global header template
$template_footer = \"gfooter.tml\";    // the global footer template

/* Template information stuff
  ----------------------------
  The following strings in your templates are replaced with the description;

    [>DOMAIN<] = domain searching for
    [>RAWOUTPUT<] = the raw output of the whois query
    [>WHOIS_SERVER<] = the whois server used
    [>AVAIL_LIST<] = a list of the available domains (in global/wizard search mode)
    [>UNAVAIL_LIST<] = a list of the unavailable domains (in global/wizard search mode)
    [>ERROR_MSG<] = the error message produced
    [>EXT<] = the extension if it is set
    [>EXT_HTML_LIST<] = a list of the extensions supported in a html list
    [>EXT_LIST<] = a list of extensions supported

  parameters to the script (no parameters brings up normal search script);

    show_raw=1    = wherther to show the raw output page
    do_wizard=1    = whether the information being passed is for the wizard
    domain=(string) = do a search for the domain (string)
    list_exts=1    = show the extensions supported page
    do_global=1    = goto the global search page
    do_mini_search=1 = just show the search form without anything else
    company=(string) = used for the wizard, needed in order to search
    keyword1=(string) = used for the wizard, needed in order to search
    keyword2=(string) = used for the wizard, needed in order to search

  If any of this is unclear, see the provided example templates
*/

$template_search_mini = \"searchform.tml\";    // search template
$template_search = \"searchmain.tml\";
$template_raw_output = \"rawoutput.tml\";    // raw output template
$template_available = \"isavail.tml\";    // template for available
$template_taken = \"istaken.tml\";    // template for taken
$template_wizard = \"wizard.tml\";    // template for the domain wizard
$template_wizard_results = \"wizardres.tml\"; // the output template for the domain wizard
$template_error = \"error.tml\";    // the template in case of error
$template_exts_list = \"exts_list.tml\";
$template_global = \"global.tml\";
$template_global_results = \"globres.tml\";

$search_title = \"Let Floyd find your domain name\";
$raw_output_title = \"Floyd\'s Raw WHOIS Output\";
$available_title = \"Floyd says Domain Name Available!\";
$taken_title = \"Floyd says Doman Name in use\";
$wizard_title = \"Floyd the Domain Name Wizard\";
$error_title = \"Floyd Encountered an Error!\";
$exts_list_title = \"Floyd supports the following extensions\";
$global_title = \"Let Floyd do the hard work!\";

// the extensions that we are going to be using, edit these for your needs
$whois_exts = array(
    \"com\",
    \"net\",
    \"org\",
    \"com.cn\",
    \"net.cn\",
    \"org.cn\",
    \"gov.cn\",
    \"sh\",
    \"cc\"
);

// some extensions (com/net/org) have a server which contains the name of the server which should be used for  

the information, this simply tells the script to use the whois server as a source for the server info... ;)
$whois_si_servers = array();

// an array of the `whois\' servers
$whois_servers = array();

// default whois servers for info
$whois_info_servers = array();

// the backup whois servers to try
$whois_info_servers_backup = array();

// the strings that are returned if the domain is available
$whois_avail_strings = array();

// some substitution strings follow
$errormsg = \"\";
$titlebar = \"MWhois written by Matt Wilson\";    // the defatul title bar
$rawoutput = \"\";
$avail = array();
$unavail = array();
$whois_server = \"\";

// the name of the script
$script_name = \"index.php\";

function my_in_array($val,$array_)
{
    for($l=0; $l<sizeof($array_); $l++)
        if($array_[$l] == $val)
            return 1;

    return 0;
}

// this loads the server info for the extensions in $whois_exts;
function load_server_info()
{
    global $whois_exts;
    global $whois_si_servers;
    global $whois_servers;
    global $whois_info_servers;
    global $whois_info_servers_backup;
    global $whois_avail_strings;

    // load the servers.lst file
    $tlds = file(\"servers.lst\");

    for($l=0; $l<sizeof($tlds); $l++){
        // time leading spaces or trailing spaces
        $tlds[$l] = chop($tlds[$l]);

        // filter out the commented lines (begin with #)
        if(substr($tlds[$l], 0, 1) == \"#\" || !strlen($tlds[$l])) { continue; }

        // explode via the seperation char `|\'
        $es = explode(\"|\", $tlds[$l]);

        // check to see whether we want this TLD
        if(!my_in_array($es[0], $whois_exts)) { continue; }

        // yes we do, so store the details in the appropriate arrays
        $whois_servers[$es[0]] = $es[1];
        $whois_si_servers[$es[0]] = $es[5];
        $whois_info_servers[$es[0]] = $es[3];
        $whois_info_servers_backup[$es[0]] = $es[4];
        $whois_avail_strings[$es[1]] = $es[2];

        // thats it!
    }
}

function choose_info_server($domain, $ext)
{
    global $whois_info_servers;
    global $whois_si_servers;
    global $whois_server;
    global $whois_servers;

    $whois_server = \"\";

    if($whois_si_servers[$ext]){
        if(($co = fsockopen($whois_servers[$ext], 43)) == false){
            echo \"<!-- choose_info_server() : unable to connect to \".$whois_servers[$ext].\" @ line  

#\".$__LINE__.\" -->\\n\";
            $whois_server = $whois_servers[$ext];
        } else {
            echo \"<!-- choose_info_servers() : connected to \".$whois_servers[$ext].\" @ line  

#\".$__LINE__.\", looking for `\".$whois_si_servers[$ext].\"\' -->\\n\";
            fputs($co, $domain.\".\".$ext.\"\\n\");
            while(!feof($co))
                $output .= fgets($co,128);

            fclose($co);

            $he = strpos($output, $whois_si_servers[$ext]) + strlen($whois_si_servers[$ext]);
            $le = strpos($output, \"\\n\", $he);
            $whois_server = substr($output, $he, $le-$he);
            echo \"<!-- choose_info_servers() : found `\".$whois_server.\"\' @ line #\".$__LINE__.\",  

using for whois info server -->\\n\";
        }
    } else {
        $whois_server = $whois_info_servers[$ext];
    }

    $whois_server = trim($whois_server);
}

// make all the changes
function make_changes($fil)
{
    global $domain;
    global $errormsg;
    global $titlebar;
    global $rawoutput;
    global $avail;
    global $unavail;
    global $ext;
    global $whois_exts;
    global $whois_servers;
    global $script_name;

    $f = implode(\"\",file($fil));

    $f = str_replace(\"[>WHOIS_SERVER<]\",$whois_servers[$ext],$f);
    $f = str_replace(\"[>TITLE_BAR<]\",$titlebar,$f);
    $f = str_replace(\"[>DOMAIN<]\",$domain,$f);
    $f = str_replace(\"[>ERROR_MSG<]\",$errormsg,$f);
    $f = str_replace(\"[>RAWOUTPUT<]\",$rawoutput,$f);

    for($l=0; $l<sizeof($avail); $l++){
        $sp[1] = substr(strchr($avail[$l],\".\"),1);
        $sp[0] = substr($avail[$l],0,strlen($avail[$l])-strlen($sp[1])-1);
        $avail_s = $avail_s.\"<a  

href=\\\"\".$script_name.\"?domain=\".$sp[0].\"&ext=\".$sp[1].\"\\\">\".$avail[$l].\"</a><br>\";
    }

     for($l=0; $l<sizeof($unavail); $l++){
                $sp[1] = substr(strchr($unavail[$l],\".\"),1);
                $sp[0] = substr($unavail[$l],0,strlen($unavail[$l])-strlen($sp[1])-1);
                $unavail_s = $unavail_s.\"<a  

href=\\\"\".$script_name.\"?domain=\".$sp[0].\"&ext=\".$sp[1].\"\\\">\".$unavail[$l].\"</a><br>\";
    }

    $f = str_replace(\"[>AVAIL_LIST<]\",$avail_s,$f);
    $f = str_replace(\"[>UNAVAIL_LIST<]\",$unavail_s,$f);
    $f = str_replace(\"[>SCRIPT_NAME<]\", $script_name, $f);
    $f = str_replace(\"[>EXT<]\",$ext,$f);
    $f = str_replace(\"[>EXT_LIST<]\",implode(\"<br>\",$whois_exts),$f);
    $f = str_replace(\"[>EXT_HTML_LIST<]\",\"<select  

name=ext>\\n<option>\".implode(\"\\n<option>\",$whois_exts).\"\\n</select>\",$f);

    return $f;
}

// show the error page
function do_error()
{
    global $use_global_templates;
    global $template_header;
    global $template_footer;
    global $template_error;
    global $domain;
    global $titlebar;
    global $error_title;
    global $errormsg;

    $titlebar = $error_title;

    if($use_global_templates)
        echo make_changes($template_header);

    echo make_changes($template_error);

    if($use_global_templates)
        echo make_changes($template_footer);

    exit();
}

// checks the domain is legal
function check_domain()
{
    global $errormsg;
    global $domain;
    global $ext;
    global $whois_exts;

    if(isset($ext)){
        if(!strlen($ext)){
            $errormsg = \"没有选择域名后缀\";
            return 0;
        }
        if(!my_in_array($ext,$whois_exts)){
            $errormsg = \"不支持此域名后缀\";
            return 0;
        }
    }
    if(isset($domain)){
        if(strlen($domain) < 2 || strlen($domain) > 57){
            $errormsg = \"域名太长或太短\";
            return 0;
        }
        if(strlen($domain) == 2 && !ereg(\"([0-9]){2}\",$domain)){
            $errormsg = \"在2个字节的域名中不能包含有字母\";
            return 0;
        }
        if(ereg(\"^-|-$\",$domain)){
            $errormsg = \"域名前和域名后不能使用-,也不可以连续使用-\";
            return 0;
        }
        if(!ereg(\"([a-z]|[A-Z]|[0-9]|-){\".strlen($domain).\"}\",$domain)){
            $errormsg = \"域名只可以包含字母数字组合和-\";
            return 0;
        }
    }

    return 1;
}

// perform_whois function returns 0 if domain is available otherwise returns either the raw info or 1
function perform_whois($domainname,$ext,$raw)
{
    global $errormsg;
    global $whois_servers;
    global $rawoutput;
    global $whois_avail_strings;

    $rawoutput = \"\";

    if($raw)
        return do_raw($domainname,$ext);

    if(($ns = fsockopen($whois_servers[$ext],43)) == false){
        $errormsg = \"无法连接到域名查询服务器 <b><i>\".$whois_servers[$ext].\"</i></b>\";
        return -1;
    }
    fputs($ns,\"$domainname.$ext\\n\");
    while(!feof($ns))
        $rawoutput .= fgets($ns,128);

    fclose($ns);

    echo \"<!--\\nAvail string = \\\"\".$whois_avail_strings[$whois_servers[$ext]].\"\\\"\\nComparing against =  

\\\"\".$rawoutput.\"\\\"\\n-->\\n\";

    if(!ereg($whois_avail_strings[$whois_servers[$ext]], $rawoutput))
        return 0;

    return 1;
}

// this performs the whois lookup and then shows the data returned
function do_raw($domainname, $ext)
{
    global $titlebar;
    global $template_raw_output;
    global $use_global_templates;
    global $template_header;
    global $template_footer;
    global $raw_output_title;
    global $whois_info_servers;
    global $whois_servers;
    global $rawoutput;
    global $errormsg;
    global $whois_info_servers_backup;
    global $whois_avail_strings;
    global $whois_server;

    choose_info_server($domainname, $ext);

    if(($ns = fsockopen($whois_server,43)) == false){
        if(($ns = fsockopen($whois_info_servers[$ext],43)) == false){
            if(($ns = fsockopen($whois_info_servers_backup[$ext], 43)) == false){
                        return -1;
            } else {
                $whois_server = $whois_info_servers_backup[$ext];
            }
        } else {
            $whois_server = $whois_info_servers[$ext];
        }
    }

    print \"<!-- do_raw() : using `\".$whois_server.\"\' for whois query -->\\n\";

        fputs($ns,\"$domainname.$ext\\n\");
        while(!feof($ns))
                $rawoutput = $rawoutput.fgets($ns,128);

        fclose($ns);

    echo \"<!--\".$rawoutput.\"-->\";

//    $pos = @strpos($rawoutput,$whois_avail_strings[$server]);
//    if(is_string($pos) && !$pos){}
//    else{
//    if(!is_string($pos) || $pos){
//        if(($ns = fsockopen($whois_info_servers_backup[$ext],43)) == false)
//            return -1;
//        else{
//            $rawoutput = \"\";
//            fputs($ns,\"$domainname.$ext\\n\");
//            while(!feof($ns))
//                $rawoutput = $rawoutput.fgets($ns,128);
//            $pos = @strpos($rawoutput,$whois_avail_strings[$whois_info_servers_backup[$ext]]);
//            if(!is_string($pos) || $pos){}
//            else
//                return -1;
//        }
//    }

    $titlebar = $raw_output_title;

        if($use_global_templates)
                echo make_changes($template_header);

        echo make_changes($template_raw_output);

        if($use_global_templates)
                echo make_changes($template_footer);

    exit();
}

function do_getsearch_mini()
{
        global $template_search_mini;

        echo make_changes($template_search_mini);

    exit();
}

function do_getsearch()
{
        global $template_footer;
        global $template_header;
        global $use_global_templates;
        global $titlebar;
        global $template_search;
    global $search_title;

        $titlebar = $search_title;

        if($use_global_templates)
                echo make_changes($template_header);

        echo make_changes($template_search);

        if($use_global_templates)
                echo make_changes($template_footer);

        exit();     
}

function do_avail()
{
    global $template_footer;
    global $template_header;
    global $use_global_templates;
    global $titlebar;
    global $template_available;
    global $available_title;

        $titlebar = $available_title;

        if($use_global_templates)
                echo make_changes($template_header);

        echo make_changes($template_available);

        if($use_global_templates)
                echo make_changes($template_footer);

    exit();
}

function do_taken()
{
    global $template_footer;
    global $template_header;
    global $use_global_templates;
    global $template_taken;
    global $titlebar;
    global $taken_title;

        $titlebar = $taken_title;

        if($use_global_templates)
                echo make_changes($template_header);

        echo make_changes($template_taken);

        if($use_global_templates)
                echo make_changes($template_footer);

    exit();
}

function do_exts()
{
        global $template_footer;
        global $template_header;
        global $use_global_templates;
        global $template_exts_list;
        global $titlebar;
        global $exts_list_title;

        $titlebar = $exts_list_title;

        if($use_global_templates)
                echo make_changes($template_header);

        echo make_changes($template_exts_list);

        if($use_global_templates)
                echo make_changes($template_footer);

        exit();
}

function do_glob()
{
    global $domain;
    global $whois_exts;
    global $avail;
    global $unavail;
    global $template_header;
        global $template_footer;
        global $use_global_templates;
        global $titlebar;
        global $global_title;

    $titlebar = $global_title;

    if($use_global_templates)
        echo make_changes($template_header);

    if(!isset($domain)){
            global $template_global;

            echo make_changes($template_global);
    }
    else{
        global $template_global_results;

        for($l=0; $l<sizeof($whois_exts); $l++){
            if(($r = perform_whois($domain,$whois_exts[$l],0)) != -1){
                if(!$r)
                    $avail[] = $domain.\".\".$whois_exts[$l];
                else
                    $unavail[] = $domain.\".\".$whois_exts[$l];
            }
        }

        echo make_changes($template_global_results);
    }

    if($use_global_templates)
        echo make_changes($template_footer);

    exit();
}

function do_wiz()
{
        global $domain;
    global $ext;
        global $avail;
        global $unavail;
        global $template_header;
        global $template_footer;
        global $use_global_templates;
        global $titlebar;
        global $wizard_title;
    global $errormsg;
    global $keyword1;
    global $keyword2;
    global $company;

        $titlebar = $wizard_title;

        if($use_global_templates)
                echo make_changes($template_header);

    if(!isset($company) || !isset($keyword1) || !isset($keyword2)){
                global $template_wizard;

                echo make_changes($template_wizard);
        }
        else{
                global $template_wizard_results;

        $domains = array(
            $company,
            $company.$keyword1,
            $company.\"-\".$keyword1,
            $keyword1.$company,
            $keyword1.\"-\".$company,
                        $company.$keyword2,
                        $company.\"-\".$keyword2,
                        $keyword2.$company,
                        $keyword2.\"-\".$company,
            $keyword1,
            $keyword2,
            $keyword1.$keyword2,
            $keyword2.$keyword1,
            $keyword1.\"-\".$keyword2,
            $keyword2.\"-\".$keyword1
        );

        for($l=0; $l<sizeof($domains); $l++){
            $domain = strtolower(str_replace(\" \",\"\",$domains[$l]));
            if(check_domain()){
                if(($r = perform_whois($domain,$ext,0)) != -1){
                    if(!$r)
                        $avail[] = $domain.\".\".$ext;
                    else
                        $unavail[] = $domain.\".\".$ext;
                }
            }
        }

                echo make_changes($template_wizard_results);
        }

        if($use_global_templates)
                echo make_changes($template_footer);

    exit();
}

load_server_info();

if(!check_domain())
    do_error();

if(isset($do_wizard))
    do_wiz();

if(isset($do_global))
    do_glob();

if(isset($list_exts))
    do_exts();

if(isset($do_mini_search))
    do_getsearch_mini();

if(!isset($domain))
    do_getsearch();

if(isset($show_raw)){
    if(perform_whois($domain,$ext,1) != -1)
        $errormsg = \"MWhois域名查询内部错误\";

    do_error();
}

$ret = perform_whois($domain,$ext,0);
if($ret == -1)
    do_error();

if(!$ret)
    do_taken();
else
    do_avail();

?>

PHP 相关文章推荐
php 将excel导入mysql
Nov 09 PHP
php短域名转换为实际域名函数
Jan 17 PHP
phpadmin如何导入导出大数据文件及php.ini参数修改
Feb 18 PHP
解析php取整的几种方式
Jun 25 PHP
Codeigniter注册登录代码示例
Jun 12 PHP
PHP的error_reporting错误级别变量对照表
Jul 08 PHP
使用PHPMailer实现邮件发送代码分享
Oct 23 PHP
php实现TCP端口检测的方法
Apr 01 PHP
PHP加密解密实例分析
Dec 25 PHP
php版微信小店API二次开发及使用示例
Nov 12 PHP
Ubuntu 16.04下安装PHP 7过程详解
Mar 28 PHP
yii2使用gridView实现下拉列表筛选数据
Apr 10 PHP
无数据库的详细域名查询程序PHP版(2)
Oct 09 #PHP
PHP调用三种数据库的方法(3)
Oct 09 #PHP
PHP调用三种数据库的方法(2)
Oct 09 #PHP
PHP调用三种数据库的方法(1)
Oct 09 #PHP
php数据库连接
Oct 09 #PHP
基于文本的访客签到簿
Oct 09 #PHP
基于文本的搜索
Oct 09 #PHP
You might like
php支持中文字符串分割的函数
2015/05/28 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
2016/01/05 PHP
PHP实现基于文本的摩斯电码生成器
2016/01/11 PHP
yii2实现 &quot;上一篇,下一篇&quot; 功能的代码实例
2017/02/04 PHP
php框架知识点的整理和补充
2021/03/01 PHP
HTML 自动伸缩的表格Table js实现
2009/04/01 Javascript
HTML node相关的一些资料整理
2010/01/01 Javascript
js 获取Listbox选择的值的代码
2010/04/15 Javascript
juqery 学习之四 筛选查找
2010/11/30 Javascript
基于jquery的文字向上跑动类似跑马灯的效果
2014/09/22 Javascript
修改或扩展jQuery原生方法的代码实例
2015/01/13 Javascript
jQuery+HTML5实现手机摇一摇换衣特效
2015/06/05 Javascript
JavaScript中数据结构与算法(四):串(BF)
2015/06/19 Javascript
浏览器检测JS代码(兼容目前各大主流浏览器)
2016/02/21 Javascript
微信小程序 保留小数(toFixed)详细介绍
2016/11/16 Javascript
详解jQuery的Cookie插件
2016/11/23 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
React-router中结合webpack实现按需加载实例
2017/05/25 Javascript
vue-resource调用promise取数据方式详解
2017/07/21 Javascript
js中json对象和字符串的理解及相互转化操作实现方法
2017/09/22 Javascript
微信小程序倒计时功能实现代码
2017/11/09 Javascript
vue.js中proxyTable 转发请求的实现方法
2018/09/20 Javascript
ES6知识点整理之函数数组参数的默认值及其解构应用示例
2019/04/17 Javascript
Python 字典dict使用介绍
2014/11/30 Python
Python实现针对中文排序的方法
2017/05/09 Python
python利用有道翻译实现&quot;语言翻译器&quot;的功能实例
2017/11/14 Python
scrapy spider的几种爬取方式实例代码
2018/01/25 Python
详解Tensorflow数据读取有三种方式(next_batch)
2018/02/01 Python
python3实现随机数
2018/06/25 Python
使用TensorFlow实现二分类的方法示例
2019/02/05 Python
pandas数据处理之绘图的实现
2020/06/15 Python
Win10下用Anaconda安装TensorFlow(图文教程)
2020/06/18 Python
Python可视化工具如何实现动态图表
2020/10/23 Python
HTML5 文件域+FileReader 分段读取文件并上传到服务器
2017/10/23 HTML / CSS
Foot Locker意大利官网:全球领先的运动鞋和服装零售商
2017/05/30 全球购物
委托书的写法
2014/08/30 职场文书