玩转虚拟域名◎+ .


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 相关文章推荐
Oracle Faq(Oracle的版本)
Oct 09 PHP
PHPShop存在多个安全漏洞
Oct 09 PHP
怎样在UNIX系统下安装php3
Oct 09 PHP
Smarty+QUICKFORM小小演示
Feb 25 PHP
smarty中先strip_tags过滤html标签后truncate截取文章运用
Oct 25 PHP
PHP制作3D扇形统计图以及对图片进行缩放操作实例
Oct 23 PHP
php如何获取文件的扩展名
Oct 28 PHP
laravel中的错误与日志用法详解
Jul 26 PHP
PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
Aug 15 PHP
php处理抢购类功能的高并发请求
Feb 08 PHP
php array_chunk()函数用法与注意事项
Jul 12 PHP
php 利用socket发送GET,POST请求的实例代码
Jul 04 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
我的论坛源代码(一)
2006/10/09 PHP
用文本文件实现的动态实时发布新闻的程序
2006/10/09 PHP
Nigma vs Liquid BO3 第一场2.14
2021/03/10 DOTA
jquery trim() 功能源代码
2011/02/14 Javascript
jquery tab插件精简版分享
2011/09/10 Javascript
P3P Header解决Cookie跨域的问题
2013/03/12 Javascript
Node.js中的模块机制学习笔记
2014/11/04 Javascript
node.js中的http.response.end方法使用说明
2014/12/14 Javascript
移动设备web开发首选框架:zeptojs介绍
2015/01/29 Javascript
jQuery实现获取绑定自定义事件元素的方法
2015/12/02 Javascript
jQuery导航条固定定位效果实例代码
2017/05/26 jQuery
Vue 应用中结合vux使用微信 jssdk的方法
2018/08/28 Javascript
es6基础学习之解构赋值
2018/12/10 Javascript
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
2019/09/06 Javascript
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
Python类的专用方法实例分析
2015/01/09 Python
Python与Redis的连接教程
2015/04/22 Python
Python运算符重载详解及实例代码
2017/03/07 Python
Python数据结构与算法之图结构(Graph)实例分析
2017/09/05 Python
Python爬虫爬取一个网页上的图片地址实例代码
2018/01/16 Python
NLTK 3.2.4 环境搭建教程
2018/09/19 Python
Python数据可视化库seaborn的使用总结
2019/01/15 Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
2019/05/10 Python
python如何实现单链表的反转
2020/02/10 Python
Python求两个字符串最长公共子序列代码实例
2020/03/05 Python
Python3 获取文件属性的方式(时间、大小等)
2020/03/12 Python
HTML5的一个显示电池状态的API简介
2015/06/18 HTML / CSS
Electric官网:美国高级眼镜和配件品牌
2020/06/04 全球购物
CSS实现fullpage.js全屏滚动效果的示例代码
2021/03/24 HTML / CSS
亲子拓展活动方案
2014/02/20 职场文书
授权委托书格式模板
2014/04/03 职场文书
2014年母亲节寄语
2014/05/07 职场文书
保护环境倡议书100字
2014/05/19 职场文书
厨师长岗位职责范本
2014/08/25 职场文书
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书
Nginx反向代理及负载均衡如何实现(基于linux)
2021/03/31 Servers