玩转虚拟域名◎+ .


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 xml文件操作代码(一)
Mar 20 PHP
PHP 分页类(模仿google)-面试题目解答
Sep 13 PHP
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
Oct 17 PHP
调整PHP的性能
Oct 30 PHP
CI框架Session.php源码分析
Nov 03 PHP
PHP实现获取客户端IP并获取IP信息
Mar 17 PHP
php清除和销毁session的方法分析
Mar 19 PHP
php+html5实现无刷新图片上传教程
Jan 22 PHP
Laravel学习教程之从入口到输出过程详解
Aug 27 PHP
PHP创建对象的六种方式实例总结
Jun 27 PHP
php 中self,this的区别和操作方法实例分析
Nov 04 PHP
PHP使用Http Post请求发送Json对象数据代码解析
Jul 16 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中call_user_func_array的作用
2013/06/07 PHP
浅析echo(),print(),print_r(),return之间的区别
2013/11/27 PHP
php读取csv数据保存到数组的方法
2015/01/03 PHP
详解PHP中cookie和session的区别及cookie和session用法小结
2016/06/12 PHP
PHP+JavaScript实现无刷新上传图片
2017/02/21 PHP
jquery URL参数判断,确定菜单样式
2010/05/31 Javascript
JQuery小知识
2010/10/15 Javascript
jQuery 对Select的操作备忘记录
2011/07/04 Javascript
js点击事件链接的问题解决
2014/04/25 Javascript
让alert不出现弹窗的两种方法
2014/05/18 Javascript
jQuery标签替换函数replaceWith()的使用例子
2014/08/28 Javascript
jquery文字填写自动高度的实现方法
2016/11/07 Javascript
react-native 封装选择弹出框示例(试用ios&amp;android)
2017/07/11 Javascript
解决angularjs前后端分离调用接口传递中文时中文乱码的问题
2018/08/13 Javascript
React如何解决fetch跨域请求时session失效问题
2018/11/02 Javascript
[01:02:32]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第二场 2月26日
2021/03/11 DOTA
HTML中使用python屏蔽一些基本功能的方法
2017/07/07 Python
深入浅析Python中的yield关键字
2018/01/24 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
2018/08/30 Python
python3.6使用pickle序列化class的方法
2018/10/22 Python
浅谈Python2之汉字编码为unicode的问题(即类似\xc3\xa4)
2019/08/12 Python
python使用socket实现的传输demo示例【基于TCP协议】
2019/09/24 Python
Python类及获取对象属性方法解析
2020/06/15 Python
python+selenium自动化实战携带cookies模拟登陆微博
2021/01/19 Python
DC Shoes荷兰官方网站:美国极限运动品牌
2019/10/22 全球购物
哈萨克斯坦最大的时装、鞋子和配饰在线商店:Lamoda.kz
2019/11/19 全球购物
Skechers越南官方网站:来自美国的运动休闲品牌
2021/02/22 全球购物
《守株待兔》教学反思
2014/03/01 职场文书
周年庆促销方案
2014/03/15 职场文书
会计核算科岗位职责
2014/03/19 职场文书
应届毕业生求职信
2014/05/26 职场文书
2014年招生工作总结
2014/11/26 职场文书
2015年行政部工作总结
2015/04/28 职场文书
趣味运动会广播稿
2015/08/19 职场文书
python函数的两种嵌套方法使用
2022/04/02 Python
ssh服务器拒绝了密码 请再试一次已解决(亲测有效)
2022/08/14 Servers