玩转虚拟域名◎+ .


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 相关文章推荐
ThinkPHP中的常用查询语言汇总
Aug 22 PHP
PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
Oct 09 PHP
php根据日期或时间戳获取星座信息和生肖等信息
Oct 20 PHP
Netbeans 8.2将支持PHP7 更精彩
Jun 13 PHP
PHP mysqli_free_result()与mysqli_fetch_array()函数详解
Sep 21 PHP
PHP redis实现超迷你全文检索
Mar 04 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
Aug 29 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
Aug 30 PHP
PHP中in_array的隐式转换的解决方法
Mar 06 PHP
PHP实现SMTP邮件的发送实例
Sep 27 PHP
php精度计算的问题解析
Jun 21 PHP
Yii框架的路由配置方法分析
Sep 09 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
基于HBase Thrift接口的一些使用问题及相关注意事项的详解
2013/06/03 PHP
CI框架使用composer安装的依赖包步骤与方法分析
2016/11/21 PHP
Laravel 实现添加多语言提示信息
2019/10/25 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
js脚本学习 比较实用的基础
2006/09/07 Javascript
简单的Jquery全选功能
2013/11/07 Javascript
jQuery实现的一个tab切换效果内部还嵌有切换
2014/08/10 Javascript
基于jquery实现动态竖向柱状条特效
2016/02/12 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
2017/01/05 Javascript
微信小程序 轮播图swiper详解及实例(源码下载)
2017/01/11 Javascript
HTML的select控件美化
2017/03/27 Javascript
JS实现标签滚动切换效果
2017/12/25 Javascript
小程序使用watch监听数据变化的方法详解
2019/09/20 Javascript
node.JS的crypto加密模块使用方法详解(MD5,AES,Hmac,Diffie-Hellman加密)
2020/02/06 Javascript
ES6 proxy和reflect的使用方法与应用实例分析
2020/02/15 Javascript
vue项目中openlayers绘制行政区划
2020/12/24 Vue.js
Python探索之爬取电商售卖信息代码示例
2017/10/27 Python
Python matplotlib学习笔记之坐标轴范围
2019/06/28 Python
python解析命令行参数的三种方法详解
2019/11/29 Python
python面向对象之类属性和类方法案例分析
2019/12/30 Python
python中提高pip install速度
2020/02/14 Python
django admin后管定制-显示字段的实例
2020/03/11 Python
运行python提示no module named sklearn的解决方法
2020/11/29 Python
Uber Eats台湾:寻找附近提供送餐服务的餐厅
2018/05/07 全球购物
Chicco婴儿用品美国官网:汽车座椅、婴儿推车、高脚椅等
2018/11/05 全球购物
常用UNIX 命令(Linux的常用命令)
2015/12/26 面试题
本科毕业生专业自荐书范文
2014/02/05 职场文书
119消防日活动总结
2014/08/29 职场文书
小学教师师德师风个人整改措施
2014/09/18 职场文书
财务会计实训报告
2014/11/05 职场文书
2014年小学英语教师工作总
2014/12/03 职场文书
2014年个人师德工作总结
2014/12/04 职场文书
讲座通知范文
2015/04/23 职场文书
python 制作一个gui界面的翻译工具
2021/05/14 Python
Java集成swagger文档组件
2021/06/28 Java/Android
react中的DOM操作实现
2021/06/30 Javascript