玩转虚拟域名◎+ .


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
解析PHP中常见的mongodb查询操作
Jun 20 PHP
php下载文件源代码(强制任意文件格式下载)
May 09 PHP
destoon找回管理员密码的方法
Jun 21 PHP
php写入数据到CSV文件的方法
Mar 14 PHP
了解PHP的返回引用和局部静态变量
Jun 04 PHP
详解php设置session(过期、失效、有效期)
Nov 12 PHP
程序员的表白神器“520”大声喊出来
May 20 PHP
PHP加密解密类实例代码
Jul 20 PHP
PHP自定义图片缩放函数实现等比例不失真缩放的方法
Aug 19 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
May 08 PHP
PHP实现简单注册登录系统
Dec 28 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
PHP无限分类(树形类)的深入分析
2013/06/02 PHP
apache php mysql开发环境安装教程
2016/07/28 PHP
thinkPHP5.0框架开发规范简介
2017/03/25 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
PHP小白必须要知道的php基础知识(超实用)
2017/10/10 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
2018/12/06 PHP
背景音乐每次刷新都可以自动更换
2007/02/01 Javascript
JS+CSS实现电子商务网站导航模板效果代码
2015/09/10 Javascript
jquery UI Datepicker时间控件的使用方法(加强版)
2015/11/07 Javascript
Node.js与MySQL交互操作及其注意事项
2016/10/05 Javascript
Bootstrap Modal遮罩弹出层(完整版)
2016/11/21 Javascript
js+css3实现旋转效果
2017/01/20 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
2017/12/25 Javascript
JavaScript判断变量名是否存在数组中的实例
2017/12/28 Javascript
JS同步、异步、延迟加载的方法
2018/05/05 Javascript
浅谈手写node可读流之流动模式
2018/06/01 Javascript
Python 调用DLL操作抄表机
2009/01/12 Python
Python functools模块学习总结
2015/05/09 Python
实例解析Python设计模式编程之桥接模式的运用
2016/03/02 Python
Django model序列化为json的方法示例
2018/10/16 Python
python每天定时运行某程序代码
2019/08/16 Python
纯CSS3编写的的精美动画进度条(无flash/无图像/无脚本/附源码)
2013/01/07 HTML / CSS
HTML5+CSS3 实现灵动的动画 TAB 切换效果(DEMO)
2017/09/15 HTML / CSS
新加坡网上美容店:Hermo新加坡
2019/06/19 全球购物
世界上最大的皮肤科医生拥有和经营的美容网站:LovelySkin
2021/01/03 全球购物
教育专业个人求职信
2013/12/02 职场文书
财务会计实习报告体会
2013/12/20 职场文书
部队学习十八大感言
2014/01/11 职场文书
商场活动策划方案
2014/01/24 职场文书
学生保证书范文
2014/04/28 职场文书
高等教育学专业自荐书
2014/06/17 职场文书
2014年教师节国旗下讲话稿
2014/09/10 职场文书
公司收款委托书范本
2014/09/20 职场文书
德能勤绩廉个人总结
2015/02/14 职场文书
高考诚信考试承诺书
2015/04/29 职场文书
心得体会格式及范文
2016/01/25 职场文书