频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

简单的CGI二级域名跳转程序

来源: 作者: 出处:巧巧读书 2005-12-04 进入讨论组

讨论组http://group.qqread.com

  用PERL制作简单的二级域名跳转程序  出自:Netfolie

  相信大家都申请过某些站点上提供的免费二级域名,例如网易的youname.yeah.net、youname.126.com等,这是用什么方法来实现的?现在我就用一个简单的二级域名跳转程序来为大家解开这一头雾水。
首先让我们来看看下面的程序,下面的方法是通过默认首页来调用CGI程序达到判断分析并跳转,我们把一页面置于默认的首页(底下有介绍)当我们访问站点时例如:http://www.cpcw.com的时候,默认首页通过JAVASCIPT调用CGI程序,在程序里我们通过环境变量取得浏览器里输入的URL,对URL通过判断,得出是否二级域名,如果是二级域名就打开我们存储二级域名的文本,获取制定的URL,然后跳转。如果不是二级域名,就跳转到程序里设置的页面。这样,一个简单扼要的二级域名跳转程序就实现了。   

  ####程序开始####

  $myurl="cpcw.com"; # 变量赋值 域名的后序

  $head="/home/cpcw/"; # 变量赋值 纪录域名文档的目录路径

  $urlfile="file.txt"; # 变量赋值 纪录域名文档文件名

  $myhome= "http://www.cpcw.com/main.htm"; # 变量赋值 主页的真实URL

  @geturl = split(/&/, $ENV{'QUERY_STRING'});#使用split函数拆分脚本参数或者表单输入项,然后赋予@ocpurl

  foreach (@geturl) {

  ($name,$value) = split(/=/, $_);

  &setfrom($name, $value);

  }#循环拆分数组@geturl把其中的值分别赋予变量name和value并调用子程序setfrom对变量加以处理

  read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

  @pairs = split(/&/, $buffer);

  foreach (@pairs) {

  ($name, $value) = split(/=/, $_);

  &setfrom($name, $value);

  }#读取用POST递交的表单, 标准输入口的字节数,循环拆分字节赋予变量name和value并调用子程序setfrom对变量加以处理

  $url =&getvar('url' ,'\n‖');

  $id =&getvar('id' ,'\n‖');

  $url ="$myurl" if (!($url =~ /.*\:.*\..*/ ));#从递交的表单里提取相对应的值赋予变量

  $userip=$ENV{'REMOTE_ADDR'};#提取递交脚本的主机IP地址赋予变量

  $url=~s/Http:\/\///g;

  $url=~s/HTtp:\/\///g;

  $url=~s/HTTp:\/\///g;

  $url=~s/HTTP:\/\///g;

  $url=~s/http:\/\///g;

  $url=~s/hTTP:\/\///g;

  $url=~s/htTP:\/\///g;

  $url=~s/httP:\/\///g;

  $url=~s/hTtP:\/\///g;

  $url=~s/HtTp:\/\///g;

  $url=~s/HttP:\/\///g;

  $url=~s/hTTp:\/\///g;

  $url=~s/HTtP:\/\///g;

  $url=~s/htTp:\/\///g;

  $url=~s/HtTP:\/\///g;

  $url=~s/hTtp:\/\///g;

  #把所有可能输入的http://方式都替换成空

  if (/$url/i != ~$myurl){

  &error("域名不正确");

  exit 0;

  }

  @name1=split(/\./,$url);

  $name2=$name1[0];

  $name2=~tr/A-Z/a-z/;

  #对从浏览器输入的$url变量做一些处理

  open (FILE,"$head$urlfile");

  @line=;

  close (FILE);

  #打开我们存储数据的文件并作赋值给@line

  foreach (@line){

  @line1=split(/\/,$_);

  if ($line1[0] eq $name2){

  $urllink=$line1[1];

  }

  }

  if ($url =~/^$myurl/i){

  $urllink=$myhome;

  }

  if(!($urllink)){

  printf "无该域名";

  exit 0;

  }

  print "Location: $urllink\n\n";

  exit 0;

  sub setfrom {#对变量$name和$value做一些处理和过滤

  $na进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章