动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   PHP → 阅读文章

 域名转向系统的实现

作者来源: 
阅读 1470 人次 , 2006-4-18 15:43:00 

 

相信很多喜爱制作个人网站的朋友都使用过类如http://yourname.yeah.net或者http://yourname.126.com的免费三级域名,有很多人在想:我要是能让自己的服务器也能够实现域名转向就好了。其实这并不复杂。看完了本文,你也可以做一个域名转向系统。

域名转向系统的关键技术在于:实现Web页面的重定向(Redirctory)。在本质上,域名转向系统和虚拟机系统完全不同。虚拟机的虚拟域名和IP是存在一一对应关系的。而域名转向系统不需要将域名和IP做一一映射。也就是说,它根本不需要复杂的域名解析机制和虚拟机来完成,它所做的事情就是当你在请求*.yourdomain时,将你的浏览器重新定向到你存放Html页面的实际地址。

下面我们一步一步实现域名转向系统:

(假设你的域名是www.mydomain.com 主机地址是 196.0.0.1)。

首先我们要设置DNS把 *.mydomain.com 指向我们的主机地址 196.0.0.1。如果你没有自己的DNS服务器你可以跳过这步分并与您的域名服务商联系请他们帮你把*.mydomain.com指向196.0.0.1)

win2000的DNS管理工具不允许把主机名称直接填写为*也就是说我们在win2000DNS管理工具里无法直接把*.mydomain.com指向同一个IP地址。但我们可以通过更改winnt\system32\dns\mydomain.dns这个文件来实现。此文件以文本格式保存,我们可以通过写字板将其打开。

我们需要在末尾处加入一条 * A 196.0.0.1 的记录。

我们在WIN2000的DNS管理工具里更新服务器数据文件。你会发现mydomain.com域里多出了我们本来无法直接添加的主机“*”。(注意:几小时后您所做的DNS设置才会生效。)

为了这个域名转向系统可以运行在多平台下我们选择php+mysql制作程序部分,请检查你的web服务器是否安装了phpmysql:

我们用index.htm读出浏览器送出的HTTP头信息送给dns.phpdns.php查询数据库得到转向地址并返回给客户端。

建立mysql数据库mydomain

CREATE TABLE dns (

main char(60),

link char(255)

)

main用来保存*.mydomain.com的*部分

link用来保存域名对应的转向地址。

建立index.htm:

<script>

this.location ="dns.php?url="+this.location.href;

</script>

有的朋友会问为什么不用phpGetAllHeader()函数取得浏览器送出的HTTP头信息。因为函数GetAllHeader只支持Apacheweb服务器,相信大多数win2000用户使用iis服务器。考虑到兼容性的问题我们选择使用JavaScript读出浏览器送出的HTTP头信息。



建立dns.php文件:

<?

$domain="mydomain.com"; //
域名

$database="mydomain" //
数据库

$datauser="root"; //
数据库用户

$datapwd=""; //
数据库密码

$dataserver="localhost"; //
数据库服务器地址

?>

<?

$db=mysql_pconnect($dataserver,$datauser,$datapwd);

?>

<!--
分析url部分-->

<?

$url=str_replace("http://","",$url);

$url=strrev($url);

$url=strchr($url,strrev($domain));

$url=strrev($url);

$main=str_replace("."."$domain","",$url);

?>

<!--
查询数据库部分-->

<?

$str="select link from dns where main='$main'";

$result=mysql_db_query($database,$str,$db);

list($link)=mysql_fetch_row($result);

?>

<!--
例外处理-->

<?if($link==null):?>

系统错误,或者这个域名还没有被注册!

<?else:?>

<!--
转向部分-->

<meta http-equiv="Refresh" content="1; url=http://<?echo $link;?>">

<?endif;?>



程序部分完成。

最后要做的是配置web服务器这里我们以iis5.0为例

打开Internet信息服务的管理工具,新建一个站点*.mydomain.com(注意一定要把这个站点做为独立IP的默认站点)

index.htm做为*.mydomain.com的默认文档。

至此域名转向系统实现了。你可以在数据库添加一条数据

Insert into dns values("etechnic","www.etechnic.com.cn")

以后只要大家只要在浏览器输入etechnic.mydomain.com就可以进入eNet技术频道了。

这里只向大家介绍域名转向的核心内容,你只要再编写一个简单的注册部分就可以提供像my.yeah.net的免费域名转向服务了。或者可以电子邮件zjzf_1@163.net向我免费索取asp cgi php各版本的完整域名转向服务程序。

程序部分在iis5.0+php4.0+mysql和linux+mysql+Apache测试通过。不足之处希望高手赐教。

 

  
 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:MySql初级使用指导
· 下一篇:用PHP动态生成虚拟现实VRML网页
· WHOIS类的修改版
· 图形处理函数库 画饼形图2D 3D
· 职场探秘:年薪100万都是什么样人才?
· 浅谈PHP语法(2)
· PHP变量


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077