很多站長都兼職賣域名,賺點小外塊,不要鄙視,都希望能夠在自己的網站上實現域名查詢,看看域名是否可以購賣,現在我們就來講講用PHP+AJAX如何實現國際域名查詢系統.
PHP+AJAX 域名查詢預備知識
本查詢系統利用 PHP 和 JQUery 的 Ajax 功能實現了對域名信息的查詢,這里主要實現了域名是否已經注冊的查詢,系統主要用到了萬網提供的域名查詢 API 接口,相關知識點羅列如下:
JQUery Ajax 的實現:這部分內容具體可以參見 JQuery API 文檔或本站即將推出的《JQUery 教程》。
file_get_contents 函數:把整個文件讀入一個字符串,這里用于讀取一個網頁,萬網 API 返回結果頁面.
simplexml_load_string 函數:用于解析一個 xml 文檔到對象中。
strrpos 函數:用于定位字符串第一次出現的位置,這里用來搜索關鍵字。
域名查詢系統需求分析
根據用戶輸入的域名,查詢該域名是否已經被注冊。
對域名注冊信息(whois)進行查詢,該功能本教程沒有實現,可以參考已有功能來實現。
頁面/文件信息
domain.html:表單提交及查詢結果信息顯示頁面。
domain_check.php:處理查詢域名信息的 PHP 文件。
萬網域名查詢 API 接口
接口采用HTTP,POST,GET協議.
調用URL:http://panda.www.net.cn/cgi-bin/check.cgi
參數名稱:area_domain 值為標準域名,例:5idev.com
調用舉例:http://panda.www.net.cn/cgi-bin/check.cgi?area_domain=5idev.com
返回XML,代碼如下:
- <?xml version="1.0" encoding="gb2312"?>
- <property>
- <returncode>200</returncode>
- <key>5idev.com</key>
- <original>211 : Domain name is not available</original>
- </property>
XML 結果說明:
returncod:接口調用狀態.
key:表示當前 check 的域名.
original:域名 check 的結果.
original 有4個結果:
210:Domain name is available:表示域名可以注冊
211:Domain name is not available:表示域名已經被注冊
212:Domain name is invalid:表示域名參數傳輸錯誤
214:Unknown error:表示未知錯誤或查詢異常
domain.html 頁面關鍵代碼
domain.html 頁面實現了表單 Ajax 提交及域名查詢結果信息顯示,完整的代碼如下,注意是utf-8編碼:
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1
- -transitional.dtd">
- <html>
- <head>
- <title>域名注冊查詢</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <script src="js/jquery-1.4.2.min.js"></script>
- <script type="text/javascript">
- function domain_check()
- {
- var domain = $.trim($("#domain").val());
- if( domain == ''){
- $("#check_result").html('請輸入要查詢的域名信息,如:5idev.com');
- $("#domain").focus();
- return false;
- }
- $("#domain_result").html('<img src="images/loading.gif" /> 正在查詢,請稍后...');
- $.ajax({
- type:"get",
- cache:false,
- datatype: "text",
- url:"domain_check.php?domain="+domain,
- success:function(data){
- $("#domain_result").html(data);
- }
- });
- }
- </script>
- </head>
- <body>
- <h1>域名注冊查詢</h1>
- <div>
- <form >
- 請輸入要查詢的域名:www.<input id="domain" type="text" value="5idev.com" onfocus="this.value=''" />
- <input type="button" value=" 查 詢 " onclick="domain_check()" />
- </form>
- </div>
- <div id="domain_result"></div>
- </body>
- </html>
這里利用 JAuery 實現了 Ajax GET 方式的表單提交,并對輸入的表單進行了初步非空檢測.
域名查詢 PHP 代碼,下面是完整的用于查詢域名信息和回應 Ajax 請求 PHP 源代碼:
- <?php
- $domain = htmlspecialchars(trim($_GET['domain']));
- if( !$domain ){
- echo '請輸入要查詢的域名,如:5idev.com';
- exit;
- }
- // 調用萬網域名查詢API
- $area_domain = iconv("utf-8", "gb2312",$domain);
- $domain_api = 'http://panda.www.net.cn/cgi-bin/check.cgi?area_domain='.$area_domain;
- $contents = file_get_contents($domain_api);
- $xml = simplexml_load_string($contents);
- if (!emptyempty($xml)) {
- switch($xml->original)
- {
- case '210 : Domain name is available':$result = '該域名可以注冊';break;
- case '211 : Domain name is not available':$result = '該域名已經被注冊';break;
- case '212 : Domain name is invalid':$result = '域名參數錯誤,請輸入的域名格式';break;
- case '214 : Unknown error':$result='查詢異常,請稍后再試';break;
- } //開源軟件:Vevb.com
- } else {
- // 備用,只能查詢國際域名
- $url = 'http://www.checkdomain.com/cgi-bin/checkdomain.pl?domain='.$_GET<'domain'>;
- $fp = file_get_contents($url);
- if( strpos($fp, ', has already been registered') ){
- $result = '該域名已經被注冊';
- } else {
- $result = '該域名可以注冊';
- }
- }
- echo '<b>'.$domain.'</b>:'.$result;
- ?>
需要注意的幾個問題
支持中文域名查詢:由于域名要在頁面顯示,因此利用 htmlspecialchars 函數做了特殊 html 代碼轉換,以防止非法輸入,更嚴格的可以使用正則表達式做檢測.
由于萬網接口提供的是 gb2312 編碼,因此在這里利用進行了 iconv() 函數進行了編碼轉換,如果不使用 utf-8 編碼則無需轉換.
如果使用 gb2312 編碼,在返回 Ajax 結果是可能需要將顯示結果進行 gb2312 到 utf-8 編碼的轉換.
當萬網接口無法返回結果時,啟用備用接口進行查詢,但只能查詢國際域名.
新聞熱點
疑難解答