玩转虚拟域名◎+ .


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_MySQL教程-第一天
Mar 18 PHP
ThinkPHP采用模块和操作分析
Apr 18 PHP
解析php时间戳与日期的转换
Jun 06 PHP
解析如何用php screw加密php源代码
Jun 20 PHP
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
Apr 10 PHP
php上传文件并显示上传进度的方法
Mar 24 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
Sep 30 PHP
PHP将URL转换成短网址的算法分享
Sep 13 PHP
利用PHP将图片转换成base64编码的实现方法
Sep 13 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
Jul 03 PHP
php利用云片网实现短信验证码功能的示例代码
Nov 18 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 获取远程网页内容的代码(fopen,curl已测)
2011/06/06 PHP
php绘制一条弧线的方法
2015/01/24 PHP
jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
2010/04/25 Javascript
javascript面向对象编程(一) 实例代码
2010/06/25 Javascript
js使用心得分享
2015/01/13 Javascript
jquery使用remove()方法删除指定class子元素
2015/03/26 Javascript
JS实现点击按钮获取页面高度的方法
2015/11/02 Javascript
jQuery防止重复绑定事件的解决方法
2016/05/14 Javascript
jquery获取所有选中的checkbox实现代码
2016/05/26 Javascript
js实现前端分页页码管理
2017/01/06 Javascript
EasyUI Datebox 日期验证之开始日期小于结束时间
2017/05/19 Javascript
纯js实现页面返回顶部的动画(超简单)
2017/08/10 Javascript
bootstrap中selectpicker下拉框使用方法实例
2018/03/22 Javascript
JS算法题之查找数字在数组中的索引位置
2019/05/15 Javascript
[38:39]完美世界DOTA2联赛循环赛 IO vs GXR BO2第二场 11.04
2020/11/05 DOTA
python中urllib.unquote乱码的原因与解决方法
2017/04/24 Python
对Python中range()函数和list的比较
2018/04/19 Python
python连接mongodb密码认证实例
2018/10/16 Python
Python 实现两个服务器之间文件的上传方法
2019/02/13 Python
解决Django生产环境无法加载静态文件问题的解决
2019/04/23 Python
pandas 选取行和列数据的方法详解
2019/08/08 Python
python @classmethod 的使用场合详解
2019/08/23 Python
python 常用日期处理-- datetime 模块的使用
2020/09/02 Python
用Python进行websocket接口测试
2020/10/16 Python
HTML5+lufylegend实现游戏中的卷轴
2016/02/29 HTML / CSS
html2canvas生成清晰的图片实现打印的示例代码
2019/09/30 HTML / CSS
耐克巴西官方网站:Nike巴西
2016/08/14 全球购物
俞敏洪励志演讲稿
2014/04/29 职场文书
应用外语系自荐信
2014/06/26 职场文书
教师纪念9.18事件演讲稿范文
2014/09/14 职场文书
民主生活会批评与自我批评总结
2014/10/17 职场文书
2015年综治维稳工作总结
2015/04/07 职场文书
七一表彰大会简报
2015/07/20 职场文书
创业分两种人:那么哪些适合创业?,哪些适合不适合创业呢?
2019/08/23 职场文书
详解python的内存分配机制
2021/05/10 Python
element tree树形组件回显数据问题解决
2022/08/14 Javascript