實現WEB中的@虛擬網域名稱系統(原理篇)

來源:互聯網
上載者:User
web 找到了這遍很好的東東哦,奉獻給大家。大家以後不用花錢註冊網域名稱了,呵呵!


  很多網友可能發現,現在在一些網站中,特別是個人網站中發現有使用youname@xxx.com的虛擬網域名稱。當我告訴我朋友的時候他們都說這不是電子郵件的地址嗎?其實本來確實是的,不過要是將它輸入到瀏覽器的地址中時,它就不是了,而是地地道道地一個子級網域名稱。不信的話,你在瀏覽器中輸入http://bbs@luyu.net和http://guestbook@luyu.net看看。是不是發現他們是兩個不同的地址呢,前者是本站BBS登入頁,後者是本站留言簿,而本站卻是首頁是http://luyu.net,很酷吧。 有的網友也問為什麼不用http://bbs.luyu.net和http://guestbook.luyu.net做虛擬網域名稱呢,這才是真正的二級子網域名稱啊。因為這在實現方面沒什麼不同,只是“。”在網域名稱中的作用可大不一樣,你可以用http://www.luyu.net訪問,確不是http://www@luyu@net吧,因為“。”要考慮到一個解析解碼的問題。所以要做“。”的虛擬網域名稱必須要讓網域名稱服務 (DNS)商開通泛網域名稱的作用,就是只要在瀏覽器的地址欄中鍵入*.luyu.net的網域名稱,都會先到luyu.net伺服器上去請求解析解碼服務,這樣的話,實現起無限多個免費的“。”虛擬網域名稱就不是難是了。關鍵大部分泛網域名稱的開通是要收100到200元人民幣的,所以我們暫不考慮而考慮用免費的@網域名稱了。有的網友也問為什麼不用“!#$%”其他的符號而偏偏要用@呢,這一點在看完下面的文章你自然就會明白了。

  通過本文章你就可以做出屬於自己的@網域名稱了。到時候自己就是管理員,想加什麼連結都可以,包括中文的,想想直接打http://壁紙@luyu.net那多爽啊。不過中文要注意的是UTF-8規範問題。

  下面我們就先講一下實現@虛擬網域名稱的方方面面。

  @虛擬網域名稱的實現始於在瀏覽器中直接以使用者和密碼的方式登入FTP伺服器的方法。如:在瀏覽器的地址欄中鍵入password:username@ftp://my.ftp.com,此時IE就會自動以使用者 “username” 和密碼 “password”登陸FTP伺服器;相當於先在瀏覽器的地址欄中鍵入ftp://my.ftp.com,進入登入頁面,再在提示下輸入使用者名稱和密碼一樣。這是為什麼呢?原來在http1.1協議中,就規定實現了http的訪問授權功能,形式就如同上面的password:username@FTP或是以header發送的伺服器主機。然後其中的password一項可以省略,也就是說訪問username@伺服器主機,就等於是以username的身份訪問此伺服器主機一樣,就樣我想大家就會明白為什麼我們可以用@,而不用其他的符號了吧。所以說guestbook@luyu.net,實際上就是以guestbook的使用者來訪問luyu.net主機,可為什麼能訪問到留言簿的頁面呢?其實這隻是個簡單的頁面跳轉功能而以,具體的在下面將討論到。

  實現跳轉的功能就是指當使用者進入一個頁面時,此頁面會自動的連結到一個新的頁面。例如:你在打http://luyu.net時,進入的其實不是http://luyu.net/index.html或是http://luyu.net/default.html而是def.html。這可是不我自作多情修改了伺服器的預設串連文檔,況且大部分情況上你也修改不了(因為不是自己的伺服器)。其實你在打http://luyu.net時,瀏覽器還是先進入default.html頁面,然後由裡面的javascript來進行轉向,不信的話,你可以開啟我的default.html文檔看看就知道了,不過下面我們也會把它貼出來的。

  其實我的default.html文檔中只有下面的幾行:

  <script>

  this.location = "gourl.asp?user=" + this.location.href;

  </script>

  只有短短的三行代碼,其實他的作用就是實現轉向,當網友輸入http://bbs@luyu.net時,實際上這段代碼就是將這個值賦給user變數,並轉送給gourl.asp檔案中去,以便處理。其實user的值關鍵就在於@前的http://後的那些字元,在這兒是“BBS”,而http://guestbook@luyu.net中就是“guestbook”。我們得到這些字元後,再進行相應的轉向其真實的網址。

  如:如果得到的值的“BBS”,我們就轉到http://luyu.net/free這個網址。那麼如果知道是http://luyu.net/free呢,我們可以通過文本或資料庫等來來讀。這裡我們選擇ACCESS資料庫,因為管理起來比較方便,而且支援ASP的主機一般都是支援ACCESS的。

  下面是庫中的url表結構:

  欄位名 欄位類型 欄位預設值 //功能注釋

  id int 自增 關鍵字 1 不用user做關鍵字是怕其中有中文字元

  user 字元型 null 如BBS或GUESTBOOK的值

  url 字元型 null 轉向的網址

  click int 0 訪問量

  表裡的欄位很少,只有4個,網友可以根據需要再增加一些功能欄位,如是否有快顯視窗廣告,訪問量分析等。不過必要的就是user欄位和url欄位,因為我們必須要得到user的值,再根據它得到其轉向url網址,再在gourl.asp中實現轉向就行了。

  下面是gourl.asp中實現轉向的全部程式(我會在程式中寫下注釋):


  dim conn,dbs //定義變數

  Set conn=Server.CreateObject("ADODB.Connection") //建立連線物件

  dbs=server.mappath("url.mdb") //定義要串連的資料庫路徑

  conn.open "driver={microsoft access driver (*.mdb)};dbq="&dbs //開啟並實現其資料庫源的連結

  user=trim(request.querystring("user")) //得到default.html檔案中得到的在瀏覽器中輸入的網址

  if user<>"" then //當user值不為空白時

  user=replace(user,"http://","") //將“http://”字串從user值刪去

  at=instr(user,"@") //將user值中“@”所在位置賦給變數at

  else

  response.write "資訊出錯,請聯絡moon!" //當user值為空白時則告訴網友有錯

  end if

  if at>0 then

  user=left(user,at-1) //當user值中“@”所在的位置大於0時,將其中的部分重賦給user,如“BBS”或“  GUESTBOOK”等值

  else

  response.redirect "def.htm" //如果沒有得到其中的值,如打http://www.luyu.net時,就返回def.htm檔案中。

  response.end //停止輸出

  end if

  if user<>"" then

  set rs=conn.execute("select url from dns where user='"&user&"'") //當user值不為空白時,串連資料庫,將進行搜尋

  if not rs.eof then

  conn.execute(“update url set click=click+! Where user=’”&user&”’”)//當記錄不為空白時,將此網站的訪問量加1

  response.redirect rs("url") //再轉向其網站

  else

  response.write "抱歉,沒有這個網站!" //記錄為空白時,警告網友沒有此網站

  end if

  set rs=nothing

  else

  response.write"抱歉,沒有這個網域名稱!" //當user的值為空白時,則警告網友沒有此網域名稱

  end if

  set conn=nothing //關閉資料庫連接


  如果想在訪問虛擬網域名稱時做個快顯視窗,以幫自己做個廣告的話,可以在將上面的代碼改成:

  <script>
  window.open("http://luyu.net","網路隨筆","width=350,height=450");

  this.location = "gourl.asp?user=" + this.location.href;

  </script>

  好了,這樣一個網域名稱訪問系統就簡單的做好了。如果和PHP或是JSP等來實現的話,原理也是一樣的,我相信大家看了這篇文章都可以做出來了。只是把gourl.asp檔案改一下便可。

  當然如果再加上管理系統就更會變得非常的完善,網友可以自己寫寫看,也可以參考我的下一篇(管理篇)。由於本人水平有限,錯誤在所難免,希望大家提提意見。如果問題或



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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