玩转虚拟域名◎+ .
程序员文章站
2022-05-21 20:20:54
玩转虚拟域名◎+ . 不知道大家最近上网是否发现一个新现象,就是有一些网站开始提供“username@server”的虚拟域名服务。由于“@”的魅力,大家纷纷申请,你或许会...
玩转虚拟域名◎+ .
不知道大家最近上网是否发现一个新现象,就是有一些网站开始提供“username@server”的虚拟域名服务。由于“@”的魅力,大家纷纷申请,你或许会想:“如果我也能提供这种服务,该多好阿:)人气肯定不错!”本文将给大家揭开“@”的“神秘”面纱,让大家都可以来“@”!(do u @ today?)
别急,这个并不是电子邮件的地址,是一种虚拟域名,不相信的话可以在浏览器中访问“bbs@zphp.com”。部分朋友应该使用过ie的ftp功能,就是在浏览器的地址栏中键入“password:username@server”ie就会自动登陆ftp服务器;而在http1.1协议中,就规定了http访问授权功能,形式同样为“password:username@server”,其中“password:”可以省略,也是是访问“bbs@zphp.com”实际上是以bbs的身份访问“zphp.com”这个服务器。
那么我们只是需要将具体的uri传送给php程序,在数据库中搜索出真实的url重定向就可以了。
首先我们需要制作一个传送uri的页面(作为服务器的默认文档,一般命名为index.htm);在js的window对象中就可以实现这项功能,下面是index.htm的源代码:
<script>
this.location = ‘gotourl.php?url=' + this.location.href;
</script>
上面的代码会将浏览器重定向到gotourl.php,并且通过querystring给变量$url赋值为当前的uri。
成功将uri传递给php程序后,就可以进入数据库查找真实url,下面是sql数据库相对应的table 的结构:
create table domain(
id int(3) unsigned default ‘0' not null, # 域名id
domain char(20) not null, # 域名
gotourl char(255) not null, # 真实的url
);
建立好了table,就可以开始编写gotourl.php了,程序分为三个部分:
1、 分析url:
$url = preg_replace(“/^http:\\/\\//i”, “”, $url); // 将url前面的“http://”去掉,不区分大小写
$url = preg_replace(“/@.+$/”, “”, $url); // 将“@”后面的部分去除
那么,剩下的url就只含有“username”的部分了。
为了给数据库应用,需要对铭感的字符进行处理:
$url = addslashes($url);
2、 搜索真实的url:
这里为了实现程序的通用性,使用了一个数据库的操作类(修改自phplib)来操作sql数据库:
$db = new dbsql(); // 连接数据库
$querystring = sprinf(“select gotourl from domain where domain='%s';”, $url); // 生成查询字符串
$gotourl = $db->result($querystring); // 查询取得结果
3、 重定向:
在php中重定向浏览器有多种方法,在这里使用比较简单的httpheader来实现:
header(“location: $gotourl”);
附
其实像网易那样子的“username.yeah.net”的虚拟域名服务和“@”的实现方法大同小异,但是“.”需要以价值200元的dns泛解析为代价,而“@”所需要的仅仅是:
1、 php/sql数据库的权限;
2、 真正dns解析的域名。
如果需要在虚拟域名服务中加入广告,比如网易的popup窗口,可以将重定向部分改为:
<script>
window.open("url","nease","width=windth,height=height");
</script>
为了对得起“天地良心”,笔者没有将合并后完整的程序加上来(骗稿费?),如果大家比较懒,需要完整的代码(包括了添加等等),可以在http://zphp.com或者http://bbs@zphp.com取得。希望大家都有一个好的访问量。
不知道大家最近上网是否发现一个新现象,就是有一些网站开始提供“username@server”的虚拟域名服务。由于“@”的魅力,大家纷纷申请,你或许会想:“如果我也能提供这种服务,该多好阿:)人气肯定不错!”本文将给大家揭开“@”的“神秘”面纱,让大家都可以来“@”!(do u @ today?)
别急,这个并不是电子邮件的地址,是一种虚拟域名,不相信的话可以在浏览器中访问“bbs@zphp.com”。部分朋友应该使用过ie的ftp功能,就是在浏览器的地址栏中键入“password:username@server”ie就会自动登陆ftp服务器;而在http1.1协议中,就规定了http访问授权功能,形式同样为“password:username@server”,其中“password:”可以省略,也是是访问“bbs@zphp.com”实际上是以bbs的身份访问“zphp.com”这个服务器。
那么我们只是需要将具体的uri传送给php程序,在数据库中搜索出真实的url重定向就可以了。
首先我们需要制作一个传送uri的页面(作为服务器的默认文档,一般命名为index.htm);在js的window对象中就可以实现这项功能,下面是index.htm的源代码:
<script>
this.location = ‘gotourl.php?url=' + this.location.href;
</script>
上面的代码会将浏览器重定向到gotourl.php,并且通过querystring给变量$url赋值为当前的uri。
成功将uri传递给php程序后,就可以进入数据库查找真实url,下面是sql数据库相对应的table 的结构:
create table domain(
id int(3) unsigned default ‘0' not null, # 域名id
domain char(20) not null, # 域名
gotourl char(255) not null, # 真实的url
);
建立好了table,就可以开始编写gotourl.php了,程序分为三个部分:
1、 分析url:
$url = preg_replace(“/^http:\\/\\//i”, “”, $url); // 将url前面的“http://”去掉,不区分大小写
$url = preg_replace(“/@.+$/”, “”, $url); // 将“@”后面的部分去除
那么,剩下的url就只含有“username”的部分了。
为了给数据库应用,需要对铭感的字符进行处理:
$url = addslashes($url);
2、 搜索真实的url:
这里为了实现程序的通用性,使用了一个数据库的操作类(修改自phplib)来操作sql数据库:
$db = new dbsql(); // 连接数据库
$querystring = sprinf(“select gotourl from domain where domain='%s';”, $url); // 生成查询字符串
$gotourl = $db->result($querystring); // 查询取得结果
3、 重定向:
在php中重定向浏览器有多种方法,在这里使用比较简单的httpheader来实现:
header(“location: $gotourl”);
附
其实像网易那样子的“username.yeah.net”的虚拟域名服务和“@”的实现方法大同小异,但是“.”需要以价值200元的dns泛解析为代价,而“@”所需要的仅仅是:
1、 php/sql数据库的权限;
2、 真正dns解析的域名。
如果需要在虚拟域名服务中加入广告,比如网易的popup窗口,可以将重定向部分改为:
<script>
window.open("url","nease","width=windth,height=height");
</script>
为了对得起“天地良心”,笔者没有将合并后完整的程序加上来(骗稿费?),如果大家比较懒,需要完整的代码(包括了添加等等),可以在http://zphp.com或者http://bbs@zphp.com取得。希望大家都有一个好的访问量。
上一篇: 如何去掉文章里的 html 语法
下一篇: 2802:小游戏