PHP+AJAX實現的國際網域名稱查詢系統開發執行個體教程

來源:互聯網
上載者:User

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 (!empty($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;
    }
} 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 代碼轉換,以防止非法輸入,更嚴格的可以使用Regex做檢測。
    由於萬網介面提供的是 gb2312 編碼,因此在這裡利用進行了 iconv() 函數進行了編碼轉換,如果不使用 utf-8 編碼則無需轉換。
    如果使用 gb2312 編碼,在返回 Ajax 結果是可能需要將顯示結果進行 gb2312 到 utf-8 編碼的轉換。
    當萬網介面無法返回結果時,啟用備用介面進行查詢,但只能查詢國際網域名稱。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.