玩轉(zhuǎn)虛擬域名
玩轉(zhuǎn)虛擬域名◎+ .發(fā)表于:中國PHP 聯(lián)盟 www.phpx.com 作者/來源:y10k/y10k 人氣:5489玩轉(zhuǎn)虛擬域名◎+ .不知道大家最近上網(wǎng)是否發(fā)現(xiàn)一個新現(xiàn)象,就是有一些網(wǎng)站開始 提供
玩轉(zhuǎn)虛擬域名◎+ .
發(fā)表于:中國PHP 聯(lián)盟 www.phpx.com 作者/來源:y10k/y10k 人氣:5489
玩轉(zhuǎn)虛擬域名◎+ .
不知道大家最近上網(wǎng)是否發(fā)現(xiàn)一個新現(xiàn)象,就是有一些網(wǎng)站開始 提供“account@server”的虛擬域名服務(wù)。由于“@”的魅力, 大家紛紛申請,你或許會想:“如果我也能提供這種服務(wù),該多 好阿:)人氣肯定不錯!”本文將給大家揭開“@”的“神秘” 面紗,讓大家都可以來“@”!(Do u @ today?) 別急,這個并不是電子郵件的地址,是一種虛擬域名,不相信的 話可以在瀏覽器中訪問“bbs@zphp.com”。部分朋友應(yīng)該使用過 IE 的FTP 功能,就是在瀏覽器的地址欄中鍵入“ password:account@server”IE 就會自動登陸FTP 服務(wù)器;而在 Http1.1協(xié)議中,就規(guī)定了Http 訪問授權(quán)功能,形式同樣為“ password:account@server”,其中“password:”可以省略, 也是是訪問“bbs@zphp.com”實(shí)際上是以bbs 的身份訪問“ zphp.com ”這個服務(wù)器。 那么我們只是需要將具體的URI 傳送給PHP 程序,在數(shù)據(jù)庫中搜索 出真實(shí)的URL 重定向就可以了。
首先我們需要制作一個傳送URI 的頁面(作為服務(wù)器的默認(rèn)文檔 ,一般命名為index.htm );在JS 的Window 對象中就可以實(shí)現(xiàn)這 項(xiàng)功能,下面是index.htm 的源代碼:
上面的代碼會將瀏覽器重定向到gotourl.php ,并且通過 QueryString 給變量$url賦值為當(dāng)前的URI 。
成功將URI 傳遞給PHP 程序后,就可以進(jìn)入數(shù)據(jù)庫查找真實(shí)URL , 下面是SQL 數(shù)據(jù)庫相對應(yīng)的table 的結(jié)構(gòu):
CREATE TABLE domain(
Id int(3) UNSIGNED DEFAULT ‘0’ NOT NULL, # 域名ID
Domain char(20) NOT NULL, # 域名
Gotourl char(255) NOT NULL, # 真實(shí)的URL
);
建立好了Table ,就可以開始編寫gotourl.php 了,程序分為三個 部分:
1、 分析URL :
$url = preg_replace(“/^http:///I”, “”, $url); // 將URL 前面的“http://”去掉,不區(qū)分大小寫
$url = preg_replace(“/@. $/”, “”, $url); // 將“@” 后面的部分去除 那么,剩下的URL 就只含有“account ”的部分了。
為了給數(shù)據(jù)庫應(yīng)用,需要對銘感的字符進(jìn)行處理:
$url = addslashes($url);
2、 搜索真實(shí)的URL :
這里為了實(shí)現(xiàn)程序的通用性,使用了一個數(shù)據(jù)庫的操作類(修改 自PHPLib )來操作SQL 數(shù)據(jù)庫:
$db = new dbSql(); // 連接數(shù)據(jù)庫
,$queryString = sprinf(“SELECT gotourl FROM domain WHERE domain=’s’; ”, $url); // 生成查詢字符串
$gotourl = $db->result($queryString); // 查詢?nèi)〉媒Y(jié)果
3、 重定向:
在PHP 中重定向?yàn)g覽器有多種方法,在這里使用比較簡單的 HttpHeader 來實(shí)現(xiàn):
header(“l(fā)ocation: $gotourl”);
附
其實(shí)像網(wǎng)易那樣子的“account.yeah.net ”的虛擬域名服務(wù)和 “@”的實(shí)現(xiàn)方法大同小異,但是“. ”需要以價值200元的DNS 泛 解析為代價,而“@”所需要的僅僅是:
1、 PHP/SQL數(shù)據(jù)庫的權(quán)限;
2、 真正DNS 解析的域名。
如果需要在虛擬域名服務(wù)中加入廣告,比如網(wǎng)易的Popup 窗口, 可以將重定向部分改為:
為了對得起“天地良心”,筆者沒有將合并后完整的程序加 上來(騙稿費(fèi)?),如果大家比較懶,需要完整的代碼(包括了 添加等等),可以在http://zphp.com或者h(yuǎn)ttp://bbs@zphp.com 取得。希望大家都有一個好的訪問量。