玩转虚拟域名◎+ .


Posted in PHP onOctober 09, 2006

玩转虚拟域名◎+ .

不知道大家最近上网是否发现一个新现象,就是有一些网站开始提供“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取得。希望大家都有一个好的访问量。 

PHP 相关文章推荐
PHP+MySQL 手工注入语句大全 推荐
Oct 30 PHP
php异常处理技术,顶级异常处理器
Jun 13 PHP
php生成局部唯一识别码LUID的代码
Oct 06 PHP
Linux Apache PHP Oracle 安装配置(具体操作步骤)
Jun 17 PHP
Codeigniter实现发送带附件的邮件
Mar 19 PHP
PHP中把数据库查询结果输出为json格式简单实例
Apr 09 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
Mar 01 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
Apr 15 PHP
yii2高级应用之自定义组件实现全局使用图片上传功能的方法
Oct 08 PHP
使用PHPWord生成word文档的方法详解
Jun 06 PHP
Laravel5.1框架路由分组用法实例分析
Jan 04 PHP
PHP设计模式(七)组合模式Composite实例详解【结构型】
May 02 PHP
桌面中心(四)数据显示
Oct 09 #PHP
桌面中心(一)创建数据库
Oct 09 #PHP
桌面中心(二)数据库写入
Oct 09 #PHP
桌面中心(三)修改数据库
Oct 09 #PHP
如何对PHP程序中的常见漏洞进行攻击(上)
Oct 09 #PHP
PHP4在WinXP下IIS和Apache2服务器上的安装实例
Oct 09 #PHP
PHP 和 MySQL 开发的 8 个技巧
Oct 09 #PHP
You might like
《星际争霸2》终章已出 RTS时代宣告终结
2017/02/07 星际争霸
最令PHP初学者头痛的十四个问题
2006/07/12 PHP
简单的PHP图片上传程序
2008/03/27 PHP
PHP和.net中des加解密的实现方法
2013/02/27 PHP
使用cookie实现统计访问者登陆次数
2013/06/08 PHP
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
2013/06/18 PHP
ucenter中词语过滤原理分析
2016/07/13 PHP
JavaScript实现的日期控件具体代码
2013/11/18 Javascript
重写document.write实现无阻塞加载js广告(补充)
2014/12/12 Javascript
JavaScript中的函数模式详解
2015/02/11 Javascript
js实现文本框选中的方法
2015/05/26 Javascript
javascript实现用户点击数量统计
2016/12/25 Javascript
JavaScript限定范围拖拽及自定义滚动条应用(3)
2017/05/17 Javascript
详解vue中点击空白处隐藏div的实现(用指令实现)
2018/04/19 Javascript
Vue前后端不同端口的实现方法
2018/09/19 Javascript
vuex + keep-alive实现tab标签页面缓存功能
2019/10/17 Javascript
javascript跳转与返回和刷新页面的实例代码
2019/11/20 Javascript
浅谈vue使用axios的回调函数中this不指向vue实例,为undefined
2020/09/21 Javascript
微信小程序实现音乐播放页面布局
2020/12/11 Javascript
[01:34]2014DOTA2展望TI 剑指西雅图VG战队专访
2014/06/30 DOTA
python高手之路python处理excel文件(方法汇总)
2016/01/07 Python
浅谈Python的文件类型
2016/05/30 Python
import的本质解析
2017/10/30 Python
Python实现将HTML转换成doc格式文件的方法示例
2017/11/20 Python
Selenium定时刷新网页的实现代码
2018/10/31 Python
Python参数类型以及常见的坑详解
2019/07/08 Python
详解Python中的分支和循环结构
2020/02/11 Python
python实现随机加减法生成器
2020/02/24 Python
python统计文章中单词出现次数实例
2020/02/27 Python
全球速卖通西班牙站:AliExpress西班牙
2017/10/30 全球购物
好莱坞百老汇御用王牌美妆:Koh Gen Do 江原道
2018/04/03 全球购物
交通专业个人自荐信格式
2013/09/23 职场文书
网络工程师专家职业发展路线
2014/02/14 职场文书
财务经理岗位职责范本
2015/04/08 职场文书
2016年基层党组织公开承诺书
2016/03/25 职场文书
分析MySQL优化 index merge 后引起的死锁
2022/04/19 MySQL