程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 多用戶系統如何綁定國際域名

多用戶系統如何綁定國際域名

編輯:關於ASP.NET

多用戶系統在網絡上很常見,比如淘寶網或者攜購網上的店鋪就是最典型的多用戶系統,每個店主都有一個自己二級域名的小店(如: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中的域是否對應;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved