发信人: y10k()
整理人: eagle(2000-12-24 10:18:15), 站内信件
|
【 在 fly_dreams (fly_dream) 的大作中提到: 】
你看看源代码:
####程序开始####
$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并调用子程序setf rom对变量加以处理
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=<FILE>;
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做一些处理和过滤
$name=$_[0];
$value=$_[1];
$name=&de($name);
$name=&filter($name);
$value=&de($value);
$value=&filter($value);
if ($FORM{$_[0]}) {$FORM{$_[0]}="$FORM{$_[0]}§$_[1]";}
else {$FORM{$_[0]}=$_[1];}
}
sub de{
local($return)=$_[0];
$return =~ tr/+/ /;#将加号转换成为空格
$return =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
#将字符转换成指定格式,将十六进制值变成对应的字符。
$return =~ s/\n/\<br\>/g;#把所有的\n转换成<br\>
return $return;
}
sub filter{#对$return做过滤
local($return)=$_[0];
$return =~ s/<!--(.|\n)*-->//g;
if ($allow_html != 1) {
$return =~ s/<([^>]|\n)*>//g;
$return =~ s/<//g;
}
return $return;
}
sub getvar {#从表单里取值的子程序
local($return)="";
$return="$FORM{$_[0]}" if ($FORM{$_[0]});
$return=~ s/$_[1]//g;
return $return;
}
以上的程序还要配合一个HTML页面来实现,我们需要把这页面做为首页,他 会通过Javascript代码自动连接
我们上面的程序,程序通过判断,分析是否是二级域名,如果是就打开我们的存 储文件查找并做跳转。
<html>
<head><script language="Javascript">
NonJava =document.URL;
NON="\">";
document.write('<meta HTTP-EQUIV="REFRESH" CONTENT="0;URL=http://www.c pcw.com/name.cgi?url='+NonJava+NON);
</script>
<title></title>
</head>
<body>
</body>
</html>
域名资料存储文件格式如下
www|http://www.cpcw.com|
bbs|http://www.cpcw.com/bbs/|
.........
技巧总结:通常我们看到我们申请的二级域名有这么一选项(隐藏地址栏、 不隐藏地址栏)我们以上的程序只是跳转,并无实现真实的二级域名,我们可以 通过HTML页面里的一些小技巧来实现,我们需要做一个模板页。程序通过调用这 模板页实现让大家看到的状态栏还是例如:HTTP://BBS.CPCW.COM,模板页做成框 架的形式,上面设置为一针,下面显示你所跳转的页面,这样你不管如何点击链 接,浏览器上面的URL就怎么也不会变化!通过这种办法可以实现让人看起来是真 的虚拟二级域名。
-- 弟本布衣,躬耕于网络,苟全成绩于年级,不求闻达于MM。MM不以弟卑鄙,畏自狂躯,悉弟以MM之事。弟不甚感ぃ煨鞰M:
A、以身相许; B、以我为伴;
C、以我为亮仔; D、以上皆是
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.105.147.45]
|
|