玩转虚拟域名◎+ .


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下删除字符串中HTML标签的函数
Aug 27 PHP
PHP的单引号和双引号 字符串效率
May 27 PHP
php下连接ftp实现文件的上传、下载、删除文件实例代码
Jun 03 PHP
PHP的基本常识小结
Jul 05 PHP
PHP反向代理类代码
Aug 15 PHP
php根据日期显示所在星座的方法
Jul 13 PHP
PHP匿名函数和use子句用法实例
Mar 16 PHP
PHP微信刮刮卡 附微信接口
Jul 22 PHP
PHP构造二叉树算法示例
Jun 21 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
Dec 21 PHP
php实现数组重复数字统计实例
Sep 30 PHP
PHP实现简单的计算器
Aug 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下实现折线图效果的代码
2007/04/28 PHP
使用PHP生成图片的缩略图的方法
2015/08/18 PHP
php cli配置文件问题分析
2015/10/15 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
2015/12/21 PHP
PHP创建word文档的方法(平台无关)
2016/03/29 PHP
PHP+JavaScript实现无刷新上传图片
2017/02/21 PHP
PHP实现字符串翻转功能的方法【递归与循环算法】
2017/11/03 PHP
laravel 之 Eloquent 模型修改器和序列化示例
2019/10/17 PHP
js调用flash的效果代码
2008/04/26 Javascript
Ext面向对象开发实践(续)
2008/11/18 Javascript
js cookies实现简单统计访问次数
2009/11/24 Javascript
JavaScript 利用Cookie记录用户登录信息
2009/12/08 Javascript
jQuery EasyUI 开源插件套装 完全替代ExtJS
2010/03/24 Javascript
关于JS中的闭包浅谈
2013/08/23 Javascript
使用JavaScript的AngularJS库编写hello world的方法
2015/06/23 Javascript
微信小程序 获取设备信息 API实例详解
2016/10/02 Javascript
BootStrap实现手机端轮播图左右滑动事件
2016/10/13 Javascript
基于JavaScript定位当前的地理位置
2017/04/11 Javascript
详解Vue 2.0封装axios笔记
2017/06/22 Javascript
js+html5实现复制文字按钮
2017/07/15 Javascript
JavaScript实现星级评价效果
2019/05/17 Javascript
JS+CSS实现3D切割轮播图
2020/03/21 Javascript
在vue中动态修改css其中一个属性值操作
2020/12/07 Vue.js
[40:04]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
Python实现爬取知乎神回复简单爬虫代码分享
2015/01/04 Python
python实现自动登录人人网并采集信息的方法
2015/06/28 Python
Python eval的常见错误封装及利用原理详解
2019/03/26 Python
python实现视频分帧效果
2019/05/31 Python
pytorch常见的Tensor类型详解
2020/01/15 Python
详解Python的三种拷贝方式
2020/02/11 Python
TCP协议通讯的过程和步骤是什么
2015/10/18 面试题
师德模范事迹材料
2014/06/03 职场文书
单位作风建设自查报告
2014/10/23 职场文书
党的群众路线专项整治方案
2014/11/03 职场文书
寒假社会实践个人总结
2015/03/06 职场文书
《生物入侵者》教学反思
2016/02/16 职场文书