ASP.NET(c#)实现中英文域名查询

ASP.NET(c#)实现中英文域名查询,第1张

引言

要实现域名查询 首先要找到域名服务器 在这用的是万网的域名服务器

网址为 bin/check cgi?area_domain=

whois bin/whois?domain=

查询界面

输入中文域名后查询界面

判断是否为中文域名(javascript)

function IsChDomain(domainStr)

{

var flag = false

var pStr = ABCDEFGHIGKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz _

var domainLength = domainStr length

for(var i = i <domainLengthi++)

{

var temp = domainStr charCodeAt(i)

if(temp >= )//含有字符编码大于 的字符判断为中文 不太严格

{

flag=true

}

else

{

var temp = pStr indexOf(domainStr charAt(i))

if(temp == )

{

flag = false

break

}

}

}

return flag

}

输入英文域名后查询界面

判断是否为英文域名

function IsEnDomain(domainStr)

{

var flag = false

var pStr = ABCDEFGHIGKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz _

var domainLength = domainStr length

for(var i = i<domainLengthi++)

{

if(pStr indexOf(domainStr charAt(i)) == )

{

flag = false

break

}

else

{

flag = true

}

}

return flag

}

中国等不能注册英文域名 把相应的CheckBox的disabled属性设置为true 代码为(javascript)

function Trim(domainStr)

{

return domainStr replace(/(^s*)|(s*$)/g )

}

function checkValue()

{

if(document getElementById( txtDomainName ) value== )

{

alert( 请输入域名! )

return false

}

if(document getElementById( txtDomainName ) value length >= )

{

alert( 域名长度不能超过 个字符! )

return false

}

for(var i = i <document getElementById( txtDomainName ) value lengthi++)

{

if(document getElementById( txtDomainName ) value charAt(i) == )

{

alert( 域名中不能含有空格! )

return false

break

}

}

checkDomainType()

return true

}

function checkDomainType()

{

var domainName = document getElementById( txtDomainName ) value

domainName = Trim(domainName)

if(IsChDomain(domainName))

{

setCheckBox(true)

}

else if(IsEnDomain(domainName))

{

setCheckBox(false)

}

}

function setCheckBox(flag)

{

document getElementById( c ) disabled = flag

document getElementById( ccn ) disabled = flag

document getElementById( ccn ) disabled = flag

document getElementById( cnetcn ) disabled = flag

document getElementById( cgovcn ) disabled = flag

document getElementById( cmobi ) disabled = flag

document getElementById( cinfo ) disabled = flag

document getElementById( ccn ) disabled = flag

document getElementById( cchina ) disabled = !flag

document getElementById( cpany ) disabled = !flag

document getElementById( cneork ) disabled = !flag

}

查询结果界面

后台编码

例如查询域名

网址为

bin/check cgi?area_domain=

返回的信息为XML格式

<?xml version= encoding= gb ?>

<property>

<returncode></returncode>

<key></key>

<original>: Domain name is available</original>

</property>

其中 表示正确返回

表示可以注册

因此可通过判断original 后的代码是否为 判断域名是否可以注册

判断方法有多种 处理字符串 解析XML等

在这用的是解析XML方法

获取待查询的域名

string domainName = Common ClearString(txtDomainName Text )//清理字符串 判断域名是否合法

if (domainName == string Empty)

{

lblMsg Text = Common ShowMessage( 请输入域名! )

return

}

IList<string>domainList = new List<string>()//保存域名名称和后缀

domainList Add(domainName)//List<string>第一元素保存域名名称 其他元素为域名后缀

if (c Checked) domainList Add(c Text)

if (cnet Checked) domainList Add(cnet Text)

if (cbiz Checked) domainList Add(cbiz Text)

if (ccc Checked) domainList Add(ccc Text)

if (ctv Checked) domainList Add(ctv Text)

if (Utility IsHasCHZN(domainName))

{

if (cchina Checked) domainList Add(cchina Text)

if (cpany Checked) domainList Add(cpany Text)

if (cneork Checked) domainList Add(cneork Text)

if (ccn Checked) domainList Add(ccn Text)

}

else

{

if (c Checked) domainList Add(c Text)

if (ccn Checked) domainList Add(ccn Text)

if (ccn Checked) domainList Add(ccn Text)

if (cnetcn Checked) domainList Add(cnetcn Text)

if (cgovcn Checked) domainList Add(cgovcn Text)

if (cmobi Checked) domainList Add(cmobi Text)

if (cinfo Checked) domainList Add(cinfo Text)

}

Session[ domainName ] = domainList

Response Redirect( ShowDomainName aspx )//在 ShowDomainName aspx 中判断处理待查询的域名

判断是否为中文域名(方法)

public static bool IsHasCHZN(string domainName)

{

Regex RegCHZN = new Regex( [一 龥] )

Match m = RegCHZN Match(domainName)

return m Success

}

判断域名是否被注册(方法)

/// ** (C#) 实现域名查询**

///

///  File: CommonOperate cs

///

///  Author: 周振兴 (Zxjay 飘遥)

///

///  E Mail:

///

///  Date:

///

///  Blog:

public static bool IsReg(string domainName)

{

bool flag = false

string dm = HttpContext Current Server UrlEncode(domainName)

try

{

//判断方法非常多 如打开远程文件再处理字符串等等 这里用的方法效率不是很高

WebClient wc = new WebClient()

string xmlstr = wc DownloadString( bin/check cgi?

area_domain= + dm)

StringReader sr = new StringReader(xmlstr)

XmlTextReader xr = new XmlTextReader(sr)

while (xr Read())

{

if (xr IsStartElement( original ))

{

xr Read()

if (xr Value Substring( ) == )

{

flag = true

break

}

else

{

flag = false

break

}

}

}

return flag

}

catch

{

return false

}

}

显示域名查询情况

if (Session[ domainName ] != null)

{

IList<string>il = (IList<string>)Session[ domainName ]

if (il Count >)

{

string dm = il[ ]

string dname

Label lbl

for (int i = i <il Counti++)

{

dname = dm + il[i]

if (Utility IsReg(dname))

{

lbl = new Label()

lbl ID = lbl + i ToString()

lbl Text = string Format( <div style= padding: pxwidth: px

float:leftclear:left>{ }</div>+

<div style= text align:centerpadding: pxwidth: pxfloat:left

color:#ff >可以注册!</div>dm + il[i])

pnlDomainName Controls Add(lbl)

}

else

{

lbl = new Label()

lbl ID = lbl + i ToString()

lbl Text = string Format( <div style= padding: pxwidth: px

float:leftclear:left><a target= _blank >{ }</a></div>+

<div style= text align:centerfloat:leftpadding: pxwidth: px>已被注册!

</div>+

<div style= float:leftpadding: px><a target= _blank

bin/whois?domain={ } >查看</a></div>

dm + il[i] dm + il[i] Server UrlEncode(dm + il[i]))

pnlDomainName Controls Add(lbl)

}

}

}

}

注意事项

( ) 编码格式必须是GB

( ) 域名格式判断并不太严格

lishixinzhi/Article/program/net/201311/13950

如果只是1.baidu.com和2.baidu.com这样还好说

但是如果是1.baidu.com/123.html和2.baidu.com/123.html

这样就有点复杂了

也许你可以搜索常用的几个域名,com、org、edu、net等,没找到给个提示,找到了然后通过这个索引再往前搜索

比如上例找到了com字符串,再往前搜索到百度,基本就没问题了

if (Request.Url.AbsoluteUri.Contains("http://www.bbb.com"))

{

Response.Redirect(Request.Url.AbsoluteUri.Replace("http://www.bbb.com","http://www.aaa.com")

}

这样能把所以访问www.bbb.com的都重定向到www.aaa.com.

把这些代码放到页面的load事件里面就行。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/61352.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-27
下一篇2023-02-27

发表评论

登录后才能评论

评论列表(0条)

    保存