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

  1. <html>
  2. <head>
  3. <title>域名到期查询</title>
  4. <script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
  5. <link href="css/reset.css" rel="stylesheet" type="text/css" />
  6. <link href="css/index.css" rel="stylesheet" type="text/css" />
  7. </head>
  8. <body>
  9. <script>
  10. $(document).ready(function(){
  11. $(".dj").toggle(function(){
  12. $(".info_main").show();
  13. $(".dj").text("-")},
  14. function(){
  15. $(".info_main").hide();
  16. $(".dj").text("+")}
  17. );
  18. });
  19. </script>
  20. <h1>域名到期查询:</h1>
  21. <form class="yuming_form" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
  22. <ul>
  23. <li>
  24. <span>输入域名:</span><input class="yuming_txt" type="text" name="yuming" /><input class="yuming_btn" type="submit" value="查询" />
  25. </li>
  26. </form>
  27. <?php
  28. include "whois.php";
  29. ?>
  30. <div class="info_tit">详情:<span class="dj">+</span></div>
  31. <div class="info_main">
  32. <?php
  33. //查询域名是否被注册,等价于 $sd->PrintSta();
  34. $rs = $sd->GetInfo();
  35. if($rs=="ok") echo $sd->domain." 未注册!<br/>\r\n";
  36. else if($rs=="") echo "无法查询 ".$sd->domain." 状态!<br/>\r\n";
  37. else echo $sd->domain." 已注册,到期时间:$rs<br/>\r\n";
  38. //获得域名的详细whois信息
  39. echo $sd->GetWhois();
  40. ?>
  41. </div>
  42. </body>
  43. </html>

whois.php

  1. <?php
  2. class SearchDomain{
  3. var $domain="";
  4. function SetDomain($udomain){
  5. $this->domain = $udomain;
  6. }
  7. //
  8. // 获取whois并分析域名状态
  9. // ok 未被注册
  10. // 非空值 过期时间
  11. // 空值 未知
  12. //
  13. function GetInfo(){
  14. /*
  15. $dinfo = trim($this->GetWhois());
  16. if($dinfo=="") return "";
  17. if(eregi("no match",$dinfo)) return "ok";
  18. //return $rs;
  19. */
  20. $wl = "";
  21. $w_server = $this->GetServer();
  22. if($w_server=="") return "";
  23. $fp = fsockopen($w_server, 43, $errno, $errstr, 30);
  24. if(!$fp){
  25. echo $errstr;
  26. return "";
  27. }
  28.  
  29. $out = $this->domain."\r\n";
  30. $out .= "Connection: Close\r\n\r\n";
  31. fputs($fp, $out);
  32.  
  33. while (!feof($fp)){
  34. $wl = fgets($fp, 255);
  35.  
  36. if(eregi("no match",$wl)){
  37. fclose($fp);
  38. return "ok";
  39. }
  40. if(eregi("Expiration Date",$wl)){
  41. $lines = split(":",$wl);
  42. $t = trim($lines[1]);
  43. $ts = split(" ",$t);
  44. $t = $ts[0];
  45. if(ereg("[^0-9-]",$t)){
  46. $ts = split("-",$t);
  47. $t = $ts[2]."-".$this->MonthToNum($ts[1])."-".$ts[0];
  48. }
  49. fclose($fp);
  50. return $t;
  51. }
  52. }
  53. fclose($fp);
  54. return "";
  55. }
  56. //
  57. //获得域名的整个whois信息
  58. //
  59. function GetWhois(){
  60. $wh = "";
  61. $w_server = $this->GetServer();
  62. if($w_server=="") return "";
  63. $fp = fsockopen($w_server, 43, $errno, $errstr, 30);
  64.  
  65. if(!$fp){
  66. echo $errstr;
  67. return "";
  68. }
  69. $out = $this->domain."\r\n";
  70. $out .= "Connection: Close\r\n\r\n";
  71. fputs($fp, $out);
  72. while (!feof($fp)){
  73. $wh .= nl2br(fgets($fp, 255));
  74. }
  75. fclose($fp);
  76. return $wh;
  77. }
  78. //
  79. //输出当前域名的状态信息
  80. //
  81. function PrintSta(){
  82. $rs = $this->GetInfo();
  83. if($rs=="ok") echo "<li>" . "<font>".$this->domain."</font>" . " 未注册!</li>";
  84. else if($rs=="") echo "<li>" . "无法查询 " . "<font>".$this->domain."</font>" . " 状态!</li>";
  85. else echo "<li>" . "<font>" . $this->domain."</font>" . " 已注册,到期时间:<font>$rs</font></li>";
  86. }
  87. //
  88. //获得 whois 查询服务器
  89. //
  90. function GetServer(){
  91. $udomain=substr($this->domain,-3);
  92. switch($udomain){
  93. case "com":
  94. $w_server="whois.internic.net";
  95. break;
  96. case "net":
  97. $w_server="whois.internic.net";
  98. break;
  99. case "org":
  100. $w_server="whois.pir.org";
  101. break;
  102. case "nfo":
  103. $w_server="whois.afilias.info";
  104. break;
  105. case "biz":
  106. $w_server="whois.biz";
  107. break;
  108. case ".cc":
  109. $w_server="whois.nic.cc";
  110. break;
  111. case "edu":
  112. $w_server="whois.educause.net";
  113. break;
  114. case "gov":
  115. $w_server="whois.nic.gov";
  116. break;
  117. case ".cn":
  118. $w_server="whois.cnnic.net.cn";
  119. break;
  120. default:
  121. $w_server="";
  122. }
  123. return $w_server;
  124. }
  125. //
  126. //英语的月份转为数字
  127. //
  128. function MonthToNum($m){
  129. $m = strtolower($m);
  130.  
  131. for($i=1;$i<=12;$i++){
  132. $tt = mktime(0,0,0,$i+1,0,2005);
  133. if($m==strtolower(strftime("%b",$tt))){
  134. if($i>9) return $i;
  135. else return "0".$i;
  136. }
  137. }
  138. }
  139. }
  140. //接收域名值
  141. if ($_SERVER["REQUEST_METHOD"] == "POST"){
  142. $yuming = test_input($_POST["yuming"]);
  143. }
  144.  
  145. function test_input($data){
  146. $data = trim($data);
  147. $data = stripslashes($data);
  148. $data = htmlspecialchars($data);
  149. return $data;
  150. }
  151. /* echo $yuming; */
  152. $sd = new SearchDomain();
  153. $sd->SetDomain($yuming);
  154. $sd->PrintSta();
  155. //查询域名是否被注册,等价于 $sd->PrintSta();
  156. //$rs = $sd->GetInfo();
  157. //if($rs=="ok") echo $sd->domain." 未注册!<br/>\r\n";
  158. //else if($rs=="") echo "无法查询 ".$sd->domain." 状态!<br/>\r\n";
  159. //else echo $sd->domain." 已注册,到期时间:$rs<br/>\r\n";
  160. //获得域名的详细whois信息
  161. //echo $sd->GetWhois();
  162. ?>

注意两点:

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

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

接收方式

  1. //接收域名值
  2. if ($_SERVER["REQUEST_METHOD"] == "POST"){
  3. $yuming = test_input($_POST["yuming"]);
  4. }
  5.  
  6. function test_input($data){
  7. $data = trim($data);
  8. $data = stripslashes($data);
  9. $data = htmlspecialchars($data);
  10. return $data;
  11. }

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. mysql的数据导入导出

    1.Navicat for Mysql XML导出导入格式支持二进制数据:虽然同步数据人眼看不出区别,但是java尝试读取数据时,报datetime字段取出的值为“0000-00-00 00:00:0 ...

  2. 《Mysql 公司职员学习篇》 第一章 小A的烦恼

    第一章  小A的烦恼 ----- 为什么学习数据库 和 如何选择数据库 小A是某公司的职员,公司数据部的员工,平常的大小工作,完全离不开EXCELL,而最近小A却越来越苦恼,不由的向好朋友小Y吐槽.小 ...

  3. 分布式算法(一致性Hash算法)

    一.分布式算法 在做服务器负载均衡时候可供选择的负载均衡的算法有很多,包括: 轮循算法(Round Robin).哈希算法(HASH).最少连接算法(Least Connection).响应速度算法( ...

  4. Oracle恢复已删除数据

    Oracle恢复已删除的数据,主要有两种方法:SCN和时间戳. 一.通过SCN恢复删除且已提交的数据 1.获得当前数据库的scn号 select current_scn from v$database ...

  5. javascript中new Date浏览器兼容性处理

    看下面的代码 <script type="text/javascript"> var dt1 = new Date('2016-3-4 11:06:12'); aler ...

  6. 【C语言】5-结构体

    一.什么是结构体 * 在实际应用中,我们通常需要由不同类型的数据来构成一个整体,比如学生这个整体可以由姓名.年龄.身高等数据构成,这些数据都具有不同的类型,姓名可以是字符串类型,年龄可以是整型,身高可 ...

  7. h2database源码浅析:SQL语句的执行

    最近想好好了解一下数据库的原理,下载了h2database的源码,准备好好看看.此过程的一些想法,暂且记下来,权当做读码笔记吧! 为了调试准备的测试用例: @Test public void test ...

  8. java程序执行顺序

    原来自己一直都没弄明白Java程序的执行顺序问题,今天,自己写了个测试,果然与自己考虑的有差距 测试代码: 一个父类Animal 一个子类Dog 测试类Test 运行结果: 所以执行顺序是: 父类An ...

  9. HW-IP合法性_Java

    描述 现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如10.137.17.1,是我们非常熟悉 ...

  10. 编程中的 if ()else() 语句

    例句    if()  else() double d = Convert.ToDouble(Console .ReadLine()); if (d >= 60 && d< ...