当前位置: 首页 > 图文教程 > 网络编程 > PHP > 无数据库的详细域名查询程序PHP版(1)

PHP
php 多线程上下文中安全写文件实现代码
PHP类的使用 实例代码讲解
用php实现让页面只能被百度gogole蜘蛛访问的方法
php 学习笔记
PHP编程过程中需要了解的this,self,parent的区别
php 操作excel文件的方法小结
使用PHP获取网络文件的实现代码
PHP 巧用数组降低程序的时间复杂度
php下将XML转换为数组
php 文件上传代码(限制jpg文件)
php 无极分类(递归)实现代码
PHP 采集获取指定网址的内容
PHP 将图片按创建时间进行分类存储的实现代码
PHP 存储文本换行实现方法
PHP 批量更新网页内容实现代码
用PHP查询搜索引擎排名位置的代码
用php实现的获取网页中的图片并保存到本地的代码
php实现首页链接查询 友情链接检查的代码
处理php自动反斜杠的函数代码
php实现的遍历文件夹下所有文件,编辑删除

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 40 ::
收藏到网摘: n/a

文件一:index.php
<?php
echo "<!-- Powered by MWhois written by Matt Wilson <[email protected]> -->\\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();
?>