玩转虚拟域名◎+ .


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的控制语句
Oct 09 PHP
php header()函数使用说明
Jul 10 PHP
PHP操作MongoDB GridFS 存储文件的详解
Jun 20 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
Oct 16 PHP
php合并js请求的例子
Nov 01 PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
Jun 13 PHP
php将字符串转换成16进制的方法
Mar 17 PHP
php实现根据IP地址获取其所在省市的方法
Apr 30 PHP
php获取、检查类名、函数名、方法名的函数方法
Jun 25 PHP
PHP常见漏洞攻击分析
Feb 21 PHP
php源码的安装方法和实例
Sep 26 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
短波的认识
2021/03/01 无线电
2021年最新CPU天梯图
2021/03/04 数码科技
自己写了一个php检测文件编码的函数
2014/04/21 PHP
php生成唯一的订单函数分享
2015/02/02 PHP
PHP简单遍历对象示例
2016/09/28 PHP
php字符串操作常见问题小结
2016/10/11 PHP
关于laravel模板中生成URL的几种模式总结
2019/10/18 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
EasySlider 基于jQuery功能强大简单易用的滑动门插件
2010/06/11 Javascript
6款经典实用的jQuery小插件及源码(对话框/提示工具等等)
2013/02/04 Javascript
代码触发js事件(click、change)示例应用
2013/12/13 Javascript
JavaScript中的操作符==与===介绍
2014/12/31 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
2015/09/07 Javascript
理解javascript中try...catch...finally
2015/12/25 Javascript
angularjs 源码解析之injector
2016/08/22 Javascript
源码分析Vue.js的监听实现教程
2017/04/23 Javascript
AngularJS的ng-click传参的方法
2017/06/19 Javascript
vue.js,ajax渲染页面的实例
2018/02/11 Javascript
jQuery AJAX 方法success()后台传来的4种数据详解
2018/08/08 jQuery
详解Angular6 热加载配置方案
2018/08/18 Javascript
解决angular双向绑定无效果,ng-model不能正常显示的问题
2018/10/02 Javascript
vue项目中使用Svg的方法
2018/10/24 Javascript
vue路由前进后退动画效果的实现代码
2018/12/10 Javascript
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
基于vue3.0.1beta搭建仿京东的电商H5项目
2020/05/06 Javascript
TensorFlow的权值更新方法
2018/06/14 Python
Pandas 按索引合并数据集的方法
2018/11/15 Python
Django框架安装方法图文详解
2019/11/04 Python
Django 再谈一谈json序列化
2020/03/16 Python
Python3.7下安装pyqt5的方法步骤(图文)
2020/05/12 Python
HTML5 Canvas API中drawImage()方法的使用实例
2016/03/25 HTML / CSS
蔻驰意大利官网:COACH意大利
2019/01/16 全球购物
2014党员学习兰辉先进事迹思想汇报
2014/09/17 职场文书
黄河绝恋观后感
2015/06/08 职场文书
芙蓉镇观后感
2015/06/10 职场文书
手把手教你用SpringBoot将文件打包成zip存放或导出
2021/06/11 Java/Android