快速业务通道

多用户系统如何绑定国际域名

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-19

多用户系统在网络上很常见,比如淘宝网或者携购网上的店铺就是最典型的多用户系统,每个店主都有一个自己二级域名的小店(如:http://shop88888888.xiegoo.com/),看上去大家都是各自独立的,但从技术曾面来看,其实每个店铺使用的都是同一套程序,唯一的差别就是店铺的界面和数据。

相信实现这样的二级域名指向不同店铺的功能,对大部分程序员来说不是件难事,因为shop后面的88888888里隐藏了店铺唯一的id,通过shop88888888把这个店铺的界面和数据从数据库里筛选出来是很简单的,我在这里也不详细解释。但是我们经常在网上看到很多“多用户商城”或者“建站系统”,支持绑定国际域名,比如携购旗下的独立网店系统http://www.shopxg.com/,只要在线注册,在线绑定国际域名,就能访问自己的网店了。笔者曾经参与开发shopxg,把如何实现这样的功能,拿出来与大家分享,当然可能不是最好最有效的方法,但希望能帮到那些正在为解决这个问题发愁的技术朋友。

因为shopxg是用.NET开发的,所以下面我讲到的情况可能不适合其他语言的系统,但原理是相通的,希望能给您一点启示。

第一步:设计数据库的时候,在“店铺shop”这张表里,要设置一个字段,存放国际域名;

第二步:在shopxg的站点上做泛解析,就是让任何指向到shopxg网站所在服务器的国际域名,都会绑定到shopxg上,至于如何做泛解析,您可以到google查下;

第三步:拿前台的ShopLogin.aspx页面举例,当一个客户输入www.yifull.com/ShopLogin.aspx和www.tiaopidan.com/ShopLogin.aspx的时候,ShopLogin.aspx页面要马上获取到当前输入的域名,比如使用Request.ServerVariables["SERVER_NAME"].ToString();当然shopxg使用的是URLRewrite的重写技术来获取当前域名的,这样的方法有很多,您可以自己选择;

第四步:利用当前的域名,到数据库中精确匹配到某个店铺,然后把该店铺的数据取到前台显示;

当然上面的几步都是非常容易实现的,不是什么难题,但实现了一个多用户系统中每个店铺各自绑定国际域名之后,有很多小问题是不容忽视的:

1.每个页面频繁的获取当前域名,然后到数据库匹配,才知道是哪个店铺在请求数据,会导致系统效率低下,因此我们要让客户在第一次访问一个域名的时候,把获取回来的店铺编号放进本地cookies,当客户继续访问或者下次来访问的时候,直接从cookies里就能知道当前的域名对应的是哪个店铺了;

2.用户登陆问题:一般的网站都是使用cookies来存放我是否已经登陆某网站的信息的,对于多用户系统,如果用户登陆的时候,cookies没建好,很容易造成登陆一个网站,就相当于登陆该多用户系统上所有网站;假如可以随意登陆别人的网站后台,那后果将不堪设想;有时候甚至会造成我的定单里有别人的定单的情况,这都是cookies造成.因此我们在程序建cookies的时候,一定要区分域,在判断用户登陆的过程中,也要严格判断输入的域名和cookies中的域是否对应;

3.客户在绑定国际域名的时候,一定要判断客户的域名已经存在,并且已经指向了正确的ip,不然一经绑定,客户的网站就无法访问了;

//////获取域名指向的IP

public string GetIPByDomain(string url)
 {
 if (url.Trim() == string.Empty)
  return "";
 try
 {
  System.Net.IPHostEntry host = System.Net.Dns.GetHostByName(url);
  return host.AddressList.GetValue(0).ToString();
 }
 catch (Exception e)
 {
  return "fail";
 }
 }
  
if(this.GetIPByDomain(this.tbDomian.Text)=="fail")
  {
  Response.Write("<script>alert(''系统检测到您的域名不存在,绑定之后会导致您的网站无法访问!'');history.go(-1);</script>");
  return;
  }
  if(this.GetIPByDomain(this.tbDomian.Text)!="202.91.243.151")
  {
  Response.Write("<script>alert(''系统检测到您的域名还没有指向我们的服务器202.91.243.151,绑定之后会导致您的网站无法访问!'');history.go(-1);</script>");
  return;
  }

4.在程序中任何查询的数据库的操作,必须提供店铺的id才能查询,这样才能避免有人发起恶意操作,把其他网店的信息查询出来.

当然,在实现多用户系统绑定国际域名的时候,会碰到很多其他问题,欢迎大家交流.我的E-mail : cxl@xiegoo.com

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号