玩转虚拟域名◎+ .


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 相关文章推荐
在PHP3中实现SESSION的功能(二)
Oct 09 PHP
PHP令牌 Token改进版
Jul 18 PHP
php像数组一样存取和修改字符串字符
Mar 21 PHP
php+highchats生成动态统计图
May 21 PHP
php上传文件问题汇总
Jan 30 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
Apr 22 PHP
php结合安卓客户端实现查询交互实例
May 05 PHP
PHP结合Jquery和ajax实现瀑布流特效
Jan 07 PHP
PHP实现从上往下打印二叉树的方法
Jan 18 PHP
PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析
Apr 20 PHP
详解php协程知识点
Sep 21 PHP
PHP容器类的两种实现方式示例
Jul 24 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
实用函数9
2007/11/08 PHP
php一些公用函数的集合
2008/03/27 PHP
Laravel如何自定义command命令浅析
2019/03/23 PHP
jQuery 自动增长的文本输入框实现代码
2010/04/02 Javascript
JavaScript Chart 插件整理
2010/06/18 Javascript
jQuery.buildFragment使用方法及思路分析
2013/01/07 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
2014/05/16 Javascript
JQ中$(window).load和$(document).ready区别与执行顺序
2017/03/01 Javascript
bootstrap datepicker插件默认英文修改为中文
2017/07/28 Javascript
Angular4学习笔记之准备和环境搭建项目
2017/08/01 Javascript
JavaScript 自定义事件之我见
2017/09/25 Javascript
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
2018/03/13 Javascript
微信小程序实现获取准确的腾讯定位地址功能示例
2019/03/27 Javascript
深入解析Vue源码实例挂载与编译流程实现思路详解
2019/05/05 Javascript
对vuex中store和$store的区别说明
2020/07/24 Javascript
[01:32]寻找你心中的那团火 DOTA2 TI9火焰传递活动今日开启
2019/05/16 DOTA
[46:12]完美世界DOTA2联赛循环赛 DM vs Matador BO2第一场 11.04
2020/11/04 DOTA
分析Python的Django框架的运行方式及处理流程
2015/04/08 Python
深入解析Python的Tornado框架中内置的模板引擎
2016/07/11 Python
python中defaultdict的用法详解
2017/06/07 Python
Python中elasticsearch插入和更新数据的实现方法
2018/04/01 Python
Python输入二维数组方法
2018/04/13 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
2019/11/08 Python
python numpy 矩阵堆叠实例
2020/01/17 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
python自动化测试三部曲之request+django实现接口测试
2020/10/07 Python
中外合拍动画首获奥斯卡提名,“上海出品”《飞奔去月球》能否拿下最终大奖?
2021/03/16 国漫
CSS3中31种选择器使用方法教程
2013/12/05 HTML / CSS
戴尔英国官网:Dell英国
2017/05/27 全球购物
GetYourGuide台湾:预订旅游活动、景点和旅游项目
2019/06/10 全球购物
输入一行文字,找出其中大写字母、小写字母、空格、数字、及其他字符各有多少
2016/04/15 面试题
2014两会学习心得:时代的发展
2014/03/17 职场文书
槐乡的孩子教学反思
2014/04/27 职场文书
规范化管理年活动总结
2014/08/29 职场文书
2015年度个人教学工作总结
2015/05/20 职场文书
学生病假条怎么写
2015/08/17 职场文书