由两部分组成,一个index.php文件,一个whois的接口文件;

 <html>
<head>
<title>域名到期查询</title>
<script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
<link href="css/reset.css" rel="stylesheet" type="text/css" />
<link href="css/index.css" rel="stylesheet" type="text/css" />
</head>
<body>
<script>
$(document).ready(function(){
$(".dj").toggle(function(){
$(".info_main").show();
$(".dj").text("-")},
function(){
$(".info_main").hide();
$(".dj").text("+")}
);
});
</script>
<h1>域名到期查询:</h1>
<form class="yuming_form" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
<ul>
<li>
<span>输入域名:</span><input class="yuming_txt" type="text" name="yuming" /><input class="yuming_btn" type="submit" value="查询" />
</li>
</form>
<?php
include "whois.php";
?>
<div class="info_tit">详情:<span class="dj">+</span></div>
<div class="info_main">
<?php
//查询域名是否被注册,等价于 $sd->PrintSta();
$rs = $sd->GetInfo();
if($rs=="ok") echo $sd->domain." 未注册!<br/>\r\n";
else if($rs=="") echo "无法查询 ".$sd->domain." 状态!<br/>\r\n";
else echo $sd->domain." 已注册,到期时间:$rs<br/>\r\n";
//获得域名的详细whois信息
echo $sd->GetWhois();
?>
</div>
</body>
</html>

whois.php

 <?php
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 "<li>" . "<font>".$this->domain."</font>" . " 未注册!</li>";
else if($rs=="") echo "<li>" . "无法查询 " . "<font>".$this->domain."</font>" . " 状态!</li>";
else echo "<li>" . "<font>" . $this->domain."</font>" . " 已注册,到期时间:<font>$rs</font></li>";
}
//
//获得 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;
else return "0".$i;
}
}
}
}
//接收域名值
if ($_SERVER["REQUEST_METHOD"] == "POST"){
$yuming = test_input($_POST["yuming"]);
} function test_input($data){
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
/* echo $yuming; */
$sd = new SearchDomain();
$sd->SetDomain($yuming);
$sd->PrintSta();
//查询域名是否被注册,等价于 $sd->PrintSta();
//$rs = $sd->GetInfo();
//if($rs=="ok") echo $sd->domain." 未注册!<br/>\r\n";
//else if($rs=="") echo "无法查询 ".$sd->domain." 状态!<br/>\r\n";
//else echo $sd->domain." 已注册,到期时间:$rs<br/>\r\n";
//获得域名的详细whois信息
//echo $sd->GetWhois();
?>

注意两点:

1,index.php要include一下whois文件。

2,通过post方式传name = "yuming"这个值来实现查询,index.php传,whois.php接收。

接收方式

 //接收域名值
if ($_SERVER["REQUEST_METHOD"] == "POST"){
$yuming = test_input($_POST["yuming"]);
} function test_input($data){
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}

php调用whois接口域名查询的更多相关文章

  1. 调用API接口,查询手机号码归属地(3)

    从mysql数据库获取电话号码,查询归属地并插入到数据库 #!/usr/bin/python # -*- coding: utf-8 -*- import json, urllib, sys, pym ...

  2. 调用API接口,查询手机号码归属地(2)

    使用pymysql pip install pymysql 创建mysql测试表 CREATE TABLE `userinfo` ( `id` int(20) NOT NULL AUTO_INCREM ...

  3. 调用API接口,查询手机号码归属地(1)

    使用https://www.juhe.cn/提供的接口,查询归属地 在官网注册key即可使用. 代码如下 #!/usr/bin/python # -*- coding: utf-8 -*- impor ...

  4. 给MySQL增加mysql-udf-http和mysql-udf-json自定义函数,让MySQL有调用http接口和查询直接回JSON的能力

    1.安装mysql-udf-httpyum install -y libcurl*下载地址:http://pan.baidu.com/s/1nuYZqR3tar zxvf mysql-udf-http ...

  5. 调用phone库,查询手机号码归属地(4)

    需要安装pymysql,phone库 #!/usr/bin/python # -*- coding: utf-8 -*- import sys, pymysql, logging, phone fro ...

  6. 【转】万网域名查询接口(API)的说明

    1.域名查询接口采用HTTP,POST,GET协议:调用URL:http://panda.www.net.cn/cgi-bin/check.cgi参数名称:area_domain 值为标准域名,例:h ...

  7. python3实现域名查询和whois查询

    关键字:python3 域名查询 域名查询接口 whois查询原文:http://www.cnblogs.com/txw1958/archive/2012/08/31/python3-domain-w ...

  8. 万网域名查询API接口

    域名查询 接口地址:http://panda.www.net.cn/cgi-bin/check.cgi 接口采用HTTP,POST,GET协议 参数名称:area_domain 值为标准域名,例:nm ...

  9. WebApi接口 - 如何在应用中调用webapi接口

    很高兴能再次和大家分享webapi接口的相关文章,本篇将要讲解的是如何在应用中调用webapi接口:对于大部分做内部管理系统及类似系统的朋友来说很少会去调用别人的接口,因此可能在这方面存在一些困惑,希 ...

随机推荐

  1. UNIX V6内核源码剖析——进程

    进程的概念 1. 什么是进程 2. 进程的并行执行 3. 进程的运行状态 4. 用户模式和内核模式 cpu具有2种模式——内核模式和用户模式,通过PSW来切换. 切换时, 映射到虚拟地址的物理内存区域 ...

  2. 【二分答案+贪心】解决“最小值最大”问题(UVa 12124 - Assemble)

    Problem A - Assemble Time limit: 2 seconds Recently your team noticed that the computer you use to p ...

  3. Redis的安装与使用

    一.什么 Redis REmote DIctionary Server,简称 Redis,是一个类似于Memcached的Key-Value存储系统.相比Memcached,它支持更丰富的数据结构,包 ...

  4. php实现比较两个字符串日期大小的方法

    <?php function dateBDate($date1, $date2) { // 日期1是否大于日期2  $month1 = date("m", strtotime ...

  5. Centos 7安装gvim

    sudo yum install vim-X11 download vimrc from github

  6. hackerrank Day15: Linked List

    #include <iostream> #include <cstddef> using namespace std; class Node { public: int dat ...

  7. [记录] nicescroll 在bootstrap tabs中工作

    Operlapping Nicescroll scrolbars in Bootstrap tabs 因为我的tab是指定id的 <!-- Nav tabs --> <ul clas ...

  8. SQLite 入门教程(一)基本控制台(终端)命令

    一.基本简介 SQLite 是一个自持的(self-contained).无服务器的.零配置的.事务型的关系型数据库引擎.因为他很小,所以也可以作为嵌入式数据库内建在你的应用程序中.SQLite 被应 ...

  9. 转:ASP.NET MVC 3 and App_Code folder

    问题: In ASP.NET Webform, App_Code is standardfolder to putting code and using it at run-time.But I th ...

  10. Web前端新人笔记之HeightCharts基础

    通常情况下,Highcharts包含标题(Title).坐标轴(Axis).数据列(Series).数据提示框(Tooltip).图例(Legend).版权信息(Credits)等,高级的还包括导出功 ...