熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP.NET(c#)實現中英文域名查詢

2013-11-13 10:32:25  來源: .NET編程 

  引言

  要實現域名查詢首先要找到域名服務器在這用的是萬網的域名服務器

  網址為bin/checkcgi?area_domain=

  whoisbin/whois?domain=

  查詢界面

  輸入中文域名後查詢界面

  .

  判斷是否為中文域名(javascript)

  function IsChDomain(domainStr)

  {

  var flag = false;

  var compStr = ABCDEFGHIGKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_;

  var domainLength = domainStrlength;

  for(var i = ;i < domainLength;i++)

  {

  var temp = domainStrcharCodeAt(i);

  if(temp >= )//含有字符編碼大於的字符判斷為中文不太嚴格

  {

  flag=true;

  }

  else

  {

  var temp = compStrindexOf(domainStrcharAt(i));

  if(temp == )

  {

  flag = false;

  break;

  }

  }

  }

  return flag;

  }

  輸入英文域名後查詢界面

  .

  判斷是否為英文域名

  function IsEnDomain(domainStr)

  {

  var flag = false;

  var compStr = ABCDEFGHIGKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_;

  var domainLength = domainStrlength;

  for(var i = ;i<domainLength;i++)

  {

  if(compStrindexOf(domainStrcharAt(i)) == )

  {

  flag = false;

  break;

  }

  else

  {

  flag = true;

  }

  }

  return flag;

  }

  中國等不能注冊英文域名把相應的CheckBox的disabled屬性設置為true代碼為(javascript)

  function Trim(domainStr)

  {

  return domainStrreplace(/(^s*)|(s*$)/g );

  }

  function checkValue()

  {

  if(documentgetElementById(txtDomainName)value==)

  {

  alert(請輸入域名!);

  return false;

  }

  if(documentgetElementById(txtDomainName)valuelength >= )

  {

  alert(域名長度不能超過個字符!);

  return false;

  }

  for(var i = ;i < documentgetElementById(txtDomainName)valuelength;i++)

  {

  if(documentgetElementById(txtDomainName)valuecharAt(i) == )

  {

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

  return false;

  break;

  }

  }

  checkDomainType();

  return true;

  }

  function checkDomainType()

  {

  var domainName = documentgetElementById(txtDomainName)value;

  domainName = Trim(domainName);

  if(IsChDomain(domainName))

  {

  setCheckBox(true);

  }

  else if(IsEnDomain(domainName))

  {

  setCheckBox(false);

  }

  }

  function setCheckBox(flag)

  {

  documentgetElementById(chkorg)disabled = flag;

  documentgetElementById(chkorgcn)disabled = flag;

  documentgetElementById(chkcomcn)disabled = flag;

  documentgetElementById(chknetcn)disabled = flag;

  documentgetElementById(chkgovcn)disabled = flag;

  documentgetElementById(chkmobi)disabled = flag;

  documentgetElementById(chkinfo)disabled = flag;

  documentgetElementById(chkcn)disabled = flag;

  documentgetElementById(chkchina)disabled = !flag;

  documentgetElementById(chkcompany)disabled = !flag;

  documentgetElementById(chknetwork)disabled = !flag;

  }

  查詢結果界面

  .

  後台編碼

  例如查詢域名

  網址為

  bin/checkcgi?area_domain=

  返回的信息為XML格式

  <?xml version= encoding=gb?>

  <property>

  <returncode></returncode>

  <key></key>

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

  </property>

  其中表示正確返回

   表示可以注冊

  因此可通過判斷original 後的代碼是否為判斷域名是否可以注冊

  判斷方法有多種處理字符串解析XML等

  在這用的是解析XML方法

  獲取待查詢的域名

  string domainName = CommonClearString(txtDomainNameText );//清理字符串判斷域名是否合法

  if (domainName == stringEmpty)

  {

  lblMsgText = CommonShowMessage(請輸入域名!);

  return;

  }

  IList<string> domainList = new List<string>();//保存域名名稱和後綴

  domainListAdd(domainName);//List<string>第一元素保存域名名稱其他元素為域名後綴

  if (chkcomChecked) domainListAdd(chkcomText);

  if (chknetChecked) domainListAdd(chknetText);

  if (chkbizChecked) domainListAdd(chkbizText);

  if (chkccChecked) domainListAdd(chkccText);

  if (chktvChecked) domainListAdd(chktvText);

  if (UtilityIsHasCHZN(domainName))

  {

  if (chkchinaChecked) domainListAdd(chkchinaText);

  if (chkcompanyChecked) domainListAdd(chkcompanyText);

  if (chknetworkChecked) domainListAdd(chknetworkText);

  if (chkcnChecked) domainListAdd(chkcnText);

  }

  else

  {

  if (chkorgChecked) domainListAdd(chkorgText);

  if (chkorgcnChecked) domainListAdd(chkorgcnText);

  if (chkcomcnChecked) domainListAdd(chkcomcnText);

  if (chknetcnChecked) domainListAdd(chknetcnText);

  if (chkgovcnChecked) domainListAdd(chkgovcnText);

  if (chkmobiChecked) domainListAdd(chkmobiText);

  if (chkinfoChecked) domainListAdd(chkinfoText);

  }

  Session[domainName] = domainList;

  ResponseRedirect(ShowDomainNameaspx);//在 ShowDomainNameaspx 中判斷處理待查詢的域名

  判斷是否為中文域名(方法)

  public static bool IsHasCHZN(string domainName)

  {

  Regex RegCHZN = new Regex([一龥]);

  Match m = RegCHZNMatch(domainName);

  return mSuccess;

  }

  判斷域名是否被注冊(方法)

  /// ** (C#) 實現域名查詢**

  ///

  ///  File: CommonOperatecs

  ///

  ///  Author: 周振興 (Zxjay 飄遙)

  ///

  ///  EMail:

  ///

  ///  Date:

  ///

  ///  Blog:

  public static bool IsReg(string domainName)

  {

  bool flag = false;

  string dm = HttpContextCurrentServerUrlEncode(domainName);

  try

  {

  //判斷方法非常多如打開遠程文件再處理字符串等等這裡用的方法效率不是很高

  WebClient wc = new WebClient();

  string xmlstr = wcDownloadString(bin/checkcgi?

  area_domain= + dm);

  StringReader sr = new StringReader(xmlstr);

  XmlTextReader xr = new XmlTextReader(sr);

  while (xrRead())

  {

  if (xrIsStartElement(original))

  {

  xrRead();

  if (xrValueSubstring( ) == )

  {

  flag = true;

  break;

  }

  else

  {

  flag = false;

  break;

  }

  }

  }

  return flag;

  }

  catch

  {

  return false;

  }

  }

  顯示域名查詢情況

  if (Session[domainName] != null)

  {

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

  if (ilCount > )

  {

  string dm = il[];

  string dname;

  Label lbl;

  for (int i = ; i < ilCount; i++)

  {

  dname = dm + il[i];

  if (UtilityIsReg(dname))

  {

  lbl = new Label();

  lblID = lbl + iToString();

  lblText = stringFormat(<div style=padding:px; width:px;

  float:left;clear:left;>{}</div> +

  <div style=textalign:center;padding:px;width:px;float:left;

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

  pnlDomainNameControlsAdd(lbl);

  }

  else

  {

  lbl = new Label();

  lblID = lbl + iToString();

  lblText = stringFormat(<div style=padding:px; width:px;

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

  <div style=textalign:center;float:left;padding:px; width:px;>已被注冊!

  </div> +

  <div style=float:left;padding:px;><a target=_blank

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

  dm + il[i] dm + il[i] ServerUrlEncode(dm + il[i]));

  pnlDomainNameControlsAdd(lbl);

  }

  }

  }

  }

  注意事項

  () 編碼格式必須是GB

  () 域名格式判斷並不太嚴格

  () 參考了萬網等的一些信息


From:http://tw.wingwit.com/Article/program/net/201311/13950.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.