玩轉(zhuǎn)虛擬域名◎+ .
更新時(shí)間:2006年10月09日 00:00:00 作者:
玩轉(zhuǎn)虛擬域名◎+ .
不知道大家最近上網(wǎng)是否發(fā)現(xiàn)一個(gè)新現(xiàn)象,就是有一些網(wǎng)站開(kāi)始提供“username@server”的虛擬域名服務(wù)。由于“@”的魅力,大家紛紛申請(qǐng),你或許會(huì)想:“如果我也能提供這種服務(wù),該多好阿:)人氣肯定不錯(cuò)!”本文將給大家揭開(kāi)“@”的“神秘”面紗,讓大家都可以來(lái)“@”?。―o u @ today?)
別急,這個(gè)并不是電子郵件的地址,是一種虛擬域名,不相信的話可以在瀏覽器中訪問(wèn)“bbs@zphp.com”。部分朋友應(yīng)該使用過(guò)IE的FTP功能,就是在瀏覽器的地址欄中鍵入“password:username@server”IE就會(huì)自動(dòng)登陸FTP服務(wù)器;而在Http1.1協(xié)議中,就規(guī)定了Http訪問(wèn)授權(quán)功能,形式同樣為“password:username@server”,其中“password:”可以省略,也是是訪問(wèn)“bbs@zphp.com”實(shí)際上是以bbs的身份訪問(wèn)“zphp.com”這個(gè)服務(wù)器。
那么我們只是需要將具體的URI傳送給PHP程序,在數(shù)據(jù)庫(kù)中搜索出真實(shí)的URL重定向就可以了。
首先我們需要制作一個(gè)傳送URI的頁(yè)面(作為服務(wù)器的默認(rèn)文檔,一般命名為index.htm);在JS的Window對(duì)象中就可以實(shí)現(xiàn)這項(xiàng)功能,下面是index.htm的源代碼:
<script>
this.location = ‘gotourl.php?url=' + this.location.href;
</script>
上面的代碼會(huì)將瀏覽器重定向到gotourl.php,并且通過(guò)QueryString給變量$url賦值為當(dāng)前的URI。
成功將URI傳遞給PHP程序后,就可以進(jìn)入數(shù)據(jù)庫(kù)查找真實(shí)URL,下面是SQL數(shù)據(jù)庫(kù)相對(duì)應(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,就可以開(kāi)始編寫(xiě)gotourl.php了,程序分為三個(gè)部分:
1、 分析URL:
$url = preg_replace(“/^http:\\/\\//I”, “”, $url); // 將URL前面的“http://”去掉,不區(qū)分大小寫(xiě)
$url = preg_replace(“/@.+$/”, “”, $url); // 將“@”后面的部分去除
那么,剩下的URL就只含有“username”的部分了。
為了給數(shù)據(jù)庫(kù)應(yīng)用,需要對(duì)銘感的字符進(jìn)行處理:
$url = addslashes($url);
2、 搜索真實(shí)的URL:
這里為了實(shí)現(xiàn)程序的通用性,使用了一個(gè)數(shù)據(jù)庫(kù)的操作類(lèi)(修改自PHPLib)來(lái)操作SQL數(shù)據(jù)庫(kù):
$db = new dbSql(); // 連接數(shù)據(jù)庫(kù)
$queryString = sprinf(“SELECT gotourl FROM domain WHERE domain='%s';”, $url); // 生成查詢(xún)字符串
$gotourl = $db->result($queryString); // 查詢(xún)?nèi)〉媒Y(jié)果
3、 重定向:
在PHP中重定向?yàn)g覽器有多種方法,在這里使用比較簡(jiǎn)單的HttpHeader來(lái)實(shí)現(xiàn):
header(“l(fā)ocation: $gotourl”);
附
其實(shí)像網(wǎng)易那樣子的“username.yeah.net”的虛擬域名服務(wù)和“@”的實(shí)現(xiàn)方法大同小異,但是“.”需要以?xún)r(jià)值200元的DNS泛解析為代價(jià),而“@”所需要的僅僅是:
1、 PHP/SQL數(shù)據(jù)庫(kù)的權(quán)限;
2、 真正DNS解析的域名。
如果需要在虛擬域名服務(wù)中加入廣告,比如網(wǎng)易的Popup窗口,可以將重定向部分改為:
<script>
window.open("url","nease","width=windth,height=height");
</script>
為了對(duì)得起“天地良心”,筆者沒(méi)有將合并后完整的程序加上來(lái)(騙稿費(fèi)?),如果大家比較懶,需要完整的代碼(包括了添加等等),可以在http://zphp.com或者h(yuǎn)ttp://bbs@zphp.com取得。希望大家都有一個(gè)好的訪問(wèn)量。
不知道大家最近上網(wǎng)是否發(fā)現(xiàn)一個(gè)新現(xiàn)象,就是有一些網(wǎng)站開(kāi)始提供“username@server”的虛擬域名服務(wù)。由于“@”的魅力,大家紛紛申請(qǐng),你或許會(huì)想:“如果我也能提供這種服務(wù),該多好阿:)人氣肯定不錯(cuò)!”本文將給大家揭開(kāi)“@”的“神秘”面紗,讓大家都可以來(lái)“@”?。―o u @ today?)
別急,這個(gè)并不是電子郵件的地址,是一種虛擬域名,不相信的話可以在瀏覽器中訪問(wèn)“bbs@zphp.com”。部分朋友應(yīng)該使用過(guò)IE的FTP功能,就是在瀏覽器的地址欄中鍵入“password:username@server”IE就會(huì)自動(dòng)登陸FTP服務(wù)器;而在Http1.1協(xié)議中,就規(guī)定了Http訪問(wèn)授權(quán)功能,形式同樣為“password:username@server”,其中“password:”可以省略,也是是訪問(wèn)“bbs@zphp.com”實(shí)際上是以bbs的身份訪問(wèn)“zphp.com”這個(gè)服務(wù)器。
那么我們只是需要將具體的URI傳送給PHP程序,在數(shù)據(jù)庫(kù)中搜索出真實(shí)的URL重定向就可以了。
首先我們需要制作一個(gè)傳送URI的頁(yè)面(作為服務(wù)器的默認(rèn)文檔,一般命名為index.htm);在JS的Window對(duì)象中就可以實(shí)現(xiàn)這項(xiàng)功能,下面是index.htm的源代碼:
<script>
this.location = ‘gotourl.php?url=' + this.location.href;
</script>
上面的代碼會(huì)將瀏覽器重定向到gotourl.php,并且通過(guò)QueryString給變量$url賦值為當(dāng)前的URI。
成功將URI傳遞給PHP程序后,就可以進(jìn)入數(shù)據(jù)庫(kù)查找真實(shí)URL,下面是SQL數(shù)據(jù)庫(kù)相對(duì)應(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,就可以開(kāi)始編寫(xiě)gotourl.php了,程序分為三個(gè)部分:
1、 分析URL:
$url = preg_replace(“/^http:\\/\\//I”, “”, $url); // 將URL前面的“http://”去掉,不區(qū)分大小寫(xiě)
$url = preg_replace(“/@.+$/”, “”, $url); // 將“@”后面的部分去除
那么,剩下的URL就只含有“username”的部分了。
為了給數(shù)據(jù)庫(kù)應(yīng)用,需要對(duì)銘感的字符進(jìn)行處理:
$url = addslashes($url);
2、 搜索真實(shí)的URL:
這里為了實(shí)現(xiàn)程序的通用性,使用了一個(gè)數(shù)據(jù)庫(kù)的操作類(lèi)(修改自PHPLib)來(lái)操作SQL數(shù)據(jù)庫(kù):
$db = new dbSql(); // 連接數(shù)據(jù)庫(kù)
$queryString = sprinf(“SELECT gotourl FROM domain WHERE domain='%s';”, $url); // 生成查詢(xún)字符串
$gotourl = $db->result($queryString); // 查詢(xún)?nèi)〉媒Y(jié)果
3、 重定向:
在PHP中重定向?yàn)g覽器有多種方法,在這里使用比較簡(jiǎn)單的HttpHeader來(lái)實(shí)現(xiàn):
header(“l(fā)ocation: $gotourl”);
附
其實(shí)像網(wǎng)易那樣子的“username.yeah.net”的虛擬域名服務(wù)和“@”的實(shí)現(xiàn)方法大同小異,但是“.”需要以?xún)r(jià)值200元的DNS泛解析為代價(jià),而“@”所需要的僅僅是:
1、 PHP/SQL數(shù)據(jù)庫(kù)的權(quán)限;
2、 真正DNS解析的域名。
如果需要在虛擬域名服務(wù)中加入廣告,比如網(wǎng)易的Popup窗口,可以將重定向部分改為:
<script>
window.open("url","nease","width=windth,height=height");
</script>
為了對(duì)得起“天地良心”,筆者沒(méi)有將合并后完整的程序加上來(lái)(騙稿費(fèi)?),如果大家比較懶,需要完整的代碼(包括了添加等等),可以在http://zphp.com或者h(yuǎn)ttp://bbs@zphp.com取得。希望大家都有一個(gè)好的訪問(wèn)量。
相關(guān)文章
用PHP查詢(xún)域名狀態(tài)whois的類(lèi)
用PHP查詢(xún)域名狀態(tài)whois的類(lèi)...2006-11-11
php中文本數(shù)據(jù)翻頁(yè)(留言本翻頁(yè))
php中文本數(shù)據(jù)翻頁(yè)(留言本翻頁(yè))...2006-10-10
php mysql_real_escape_string函數(shù)用法與實(shí)例教程
mysql_real_escape_string() 函數(shù)用來(lái)轉(zhuǎn)義SQL語(yǔ)句中使用的字符串中的特殊字符2013-09-09
PHP企業(yè)級(jí)應(yīng)用之常見(jiàn)緩存技術(shù)篇
用的最廣的例子看Discuz的搜索功能,把結(jié)果ID緩存到一個(gè)表中,下次搜索相同關(guān)鍵字時(shí)先搜索緩存表。2011-01-01
PHP的類(lèi) 功能齊全的發(fā)送郵件類(lèi)
前面我們已經(jīng)介紹過(guò)了一個(gè)用于群發(fā)郵件的類(lèi),那個(gè)類(lèi)的功能只能發(fā)文本格式的郵件,下面這個(gè)類(lèi)的功能則很強(qiáng)大,不但能發(fā)html格式的郵件,還可以發(fā)附件2006-10-10
第四節(jié)--構(gòu)造函數(shù)和析構(gòu)函數(shù)
第四節(jié)--構(gòu)造函數(shù)和析構(gòu)函數(shù)...2006-11-11
實(shí)現(xiàn)“上一頁(yè)”和“下一頁(yè)按鈕
實(shí)現(xiàn)“上一頁(yè)”和“下一頁(yè)按鈕...2006-10-10
如何在PHP中使用Oracle數(shù)據(jù)庫(kù)(1)
如何在PHP中使用Oracle數(shù)據(jù)庫(kù)(1)...2006-10-10

