玩转虚拟域名◎+ .


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之第七天
Oct 09 PHP
实例(Smarty+FCKeditor新闻系统)
Jan 02 PHP
php URL跳转代码 减少外链
Jun 25 PHP
实用的简单PHP分页集合包括使用方法
Oct 21 PHP
golang与php实现计算两个经纬度之间距离的方法
Jul 22 PHP
在php7中MongoDB实现模糊查询的方法详解
May 03 PHP
ThinkPHP 3.2.2实现事务操作的方法
May 05 PHP
Laravel中Facade的加载过程与原理详解
Sep 22 PHP
实例解析php的数据类型
Oct 24 PHP
PHP中上传文件打印错误错误类型分析
Apr 14 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
May 13 PHP
PHP code 验证码生成类定义和简单使用示例
May 27 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
很温暖很温暖的Lester Young
2021/03/03 冲泡冲煮
dedecms后台验证码总提示错误的解决方法
2007/03/21 PHP
基于PHP读取csv文件内容的详解
2013/06/18 PHP
php 批量替换程序的具体实现代码
2013/10/04 PHP
PHP+Ajax+JS实现多图上传
2016/05/07 PHP
php使用文本统计访问量的方法
2016/05/12 PHP
php 生成Tab键或逗号分隔的CSV
2016/09/24 PHP
thinkPHP实现签到功能的方法
2017/03/15 PHP
php7安装mongoDB扩展的方法分析
2017/08/02 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
2017/11/20 PHP
javascript两段代码,两个小技巧
2010/02/04 Javascript
replace()方法查找字符使用示例
2013/10/28 Javascript
javascript实现文本域写入字符时限定字数
2014/02/12 Javascript
JavaScript编程的10个实用小技巧
2014/04/18 Javascript
JQuery实现DIV其他动画效果的简单实例
2016/09/18 Javascript
jsp 自动编译机制详细介绍
2016/12/01 Javascript
微信小程序之前台循环数据绑定
2017/08/18 Javascript
Vue项目全局配置微信分享思路详解
2018/05/04 Javascript
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
2019/01/15 Javascript
策略模式实现 Vue 动态表单验证的方法
2019/09/16 Javascript
JS实现秒杀倒计时特效
2020/01/02 Javascript
python实现在windows下操作word的方法
2015/04/28 Python
Python获取邮件地址的方法
2015/07/10 Python
对python requests的content和text方法的区别详解
2018/10/11 Python
python 并发编程 非阻塞IO模型原理解析
2019/08/20 Python
python数据化运营的重要意义
2019/11/25 Python
Python进程池Pool应用实例分析
2019/11/27 Python
Python实现快速大文件比较代码解析
2020/09/04 Python
幼师自我鉴定范文
2013/10/01 职场文书
商务英语毕业生自荐信范文
2013/11/08 职场文书
节约用水标语
2014/06/11 职场文书
学校师德师风整改措施
2014/10/27 职场文书
工作表扬信范文
2015/01/17 职场文书
财务总监岗位职责
2015/02/03 职场文书
张丽莉事迹观后感
2015/06/16 职场文书
Python极值整数的边界探讨分析
2021/09/15 Python