玩转虚拟域名◎+ .


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模板引擎SMARTY
Oct 09 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
Feb 16 PHP
PHP容易忘记的知识点分享
Apr 30 PHP
解析argc argv在php中的应用
Jun 24 PHP
PHP 动态生成静态HTML页面示例代码
Jan 15 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
Jul 01 PHP
php中Session的生成机制、回收机制和存储机制探究
Aug 19 PHP
PHP获取音频文件的相关信息
Jun 22 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
May 29 PHP
php curl发送请求实例方法
Aug 01 PHP
phpstudy后门rce批量利用脚本的实现
Dec 12 PHP
PHP中abstract(抽象)、final(最终)和static(静态)原理与用法详解
Jun 05 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
java EJB 加密与解密原理的一个例子
2008/01/11 PHP
PHP面向对象法则
2012/02/23 PHP
PHP更新购物车数量(表单部分/PHP处理部分)
2013/05/03 PHP
php生成随机颜色的方法
2014/11/13 PHP
JavaScript Base64编码和解码,实现URL参数传递。
2006/09/18 Javascript
javascript中IE浏览器不支持NEW DATE()带参数的解决方法
2012/03/01 Javascript
qq悬浮代码(兼容各个浏览器)
2014/01/29 Javascript
学习JavaScript设计模式(策略模式)
2015/11/26 Javascript
JavaScript基础篇(6)之函数表达式闭包
2015/12/11 Javascript
ionic由于使用了header和subheader导致被遮挡的问题的两种解决方法
2016/09/22 Javascript
AngularJS创建自定义指令的方法详解
2016/11/03 Javascript
jQuery根据ID、CLASS、等获取对象的实例
2016/12/04 Javascript
JS打开摄像头并截图上传示例
2017/02/18 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
2017/05/26 Javascript
Vue实现用户自定义字段显示数据的方法
2018/08/28 Javascript
解决vue v-for 遍历循环时key值报错的问题
2018/09/06 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
2020/01/20 Javascript
javascript 数组精简技巧小结
2020/02/26 Javascript
Vue组件间数据传递的方式(3种)
2020/07/13 Javascript
全面解析JavaScript Module模式
2020/07/24 Javascript
[00:43]魔廷新尊——痛苦女王至宝捆绑包
2020/06/12 DOTA
Python编程判断一个正整数是否为素数的方法
2017/04/14 Python
基于Python和Scikit-Learn的机器学习探索
2017/10/16 Python
python 连接各类主流数据库的实例代码
2018/01/30 Python
django表单的Widgets使用详解
2019/07/22 Python
python3实现带多张图片、附件的邮件发送
2019/08/10 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
2019/08/13 Python
浅析PEP572: 海象运算符
2019/10/15 Python
Django实现将views.py中的数据传递到前端html页面,并展示
2020/03/16 Python
美国顶级户外凉鞋品牌:Chacos
2017/03/27 全球购物
我看到了用指针调用函数的不同语法形式
2014/07/16 面试题
外贸英语专业求职信范文
2013/12/25 职场文书
2015年效能监察工作总结
2015/04/23 职场文书
2015年计生协会工作总结
2015/04/24 职场文书
老人节主持词
2015/07/04 职场文书
JavaWeb Servlet开发注册页面实例
2022/04/11 Java/Android