玩转虚拟域名◎+ .


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 文件上传功能实现代码
Jun 24 PHP
php实现下载限制速度示例分享
Feb 13 PHP
PHP fastcgi模式上传大文件(大约有300多K)报错
Sep 28 PHP
PHP将HTML转换成文本的实现代码
Jan 21 PHP
PHP文件缓存类示例分享
Jan 30 PHP
php常量详细解析
Oct 27 PHP
php 防止表单重复提交两种实现方法
Nov 03 PHP
PHP登录(ajax提交数据和后台校验)实例分享
Dec 29 PHP
php+ajax实现异步上传文件或图片功能
Jul 18 PHP
Thinkphp5行为使用方法汇总
Dec 21 PHP
laravel dingo API返回自定义错误信息的实例
Sep 29 PHP
基于laravel-admin 后台 列表标签背景的使用方法
Oct 03 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网上调查系统
2006/10/09 PHP
PHP中simplexml_load_string函数使用说明
2011/01/01 PHP
php多个文件及图片上传实例详解
2014/11/10 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
2016/11/14 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
2017/08/31 PHP
基于jquery的高性能td和input切换并可修改内容实现代码
2011/01/09 Javascript
js实现拖拽 闭包函数详细介绍
2012/11/25 Javascript
在页面上用action传递参数到后台出现乱码的解决方法
2013/12/31 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
2016/11/01 Javascript
微信公众号 摇一摇周边功能开发
2016/12/08 Javascript
Angular实现预加载延迟模块的示例
2017/10/12 Javascript
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
简述vue状态管理模式之vuex
2018/08/29 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
2018/12/09 Javascript
vue实现日历备忘录功能
2020/09/24 Javascript
Element 默认勾选表格 toggleRowSelection的实现
2019/09/04 Javascript
浅谈监听单选框radio改变事件(和layui中单选按钮改变事件)
2019/09/10 Javascript
VUEX 数据持久化,刷新后重新获取的例子
2019/11/12 Javascript
[03:27]最受玩家喜爱奖提名:PZH_Element 致玩家寄语
2016/12/20 DOTA
python排序方法实例分析
2015/04/30 Python
Python中生成Epoch的方法
2017/04/26 Python
python编程羊车门问题代码示例
2017/10/25 Python
华为2019校招笔试题之处理字符串(python版)
2019/06/25 Python
如何通过雪花算法用Python实现一个简单的发号器
2019/07/03 Python
Django中提示消息messages的设置方式
2019/11/15 Python
python 多线程共享全局变量的优劣
2020/09/24 Python
html5仿支付宝密码框的实现代码
2017/09/06 HTML / CSS
HTML5实现移动端弹幕动画效果
2019/08/01 HTML / CSS
L’Artisan Parfumeur官网:法国香水品牌
2020/08/11 全球购物
int和Integer有什么区别
2013/05/25 面试题
实习单位推荐信范文
2013/11/27 职场文书
初中生期末评语大全
2014/04/24 职场文书
2016重阳节红领巾广播稿
2015/12/18 职场文书
大学生社区义工服务心得体会
2016/01/22 职场文书
《搭石》教学反思
2016/02/18 职场文书