- 论坛徽章:
- 0
|
前日看到了一段代码,关于perl计数器的,自己尝试本机测试了一下,无法显示图片,不知道哪里出了问题,求教!
运行平台XP IIS
CODE如:
CGI.html
<HTML>
<HEAD>
<TITLE>测试计数器</TITLE>
<META HTTP-EQUIV="REFRESH" CONTENT="30">
</HEAD>
<BODY TEXT="#000000" LINK="#FFFFDD" VLINK="#FFFFFF">
<H2>测试计数器能否正常工作</H2>
<HR SIZE="1"> <!--HR设定水平线,SIZE设定线的厚度-->
<FONT FACE="黑体">您是第</FONT> <!--FACE定义字体名称-->
<IMG SRC="http://localhost/CGI_Perl/CGI2.cgi?position=6">
<IMG SRC="http://localhost/CGI_Perl/CGI2.cgi?position=5">
<IMG SRC="http://localhost/CGI_Perl/CGI2.cgi?position=4">
<IMG SRC="http://localhost/CGI_Perl/CGI2.cgi?position=3">
<IMG SRC="http://localhost/CGI_Perl/CGI2.cgi?position=2">
<IMG SRC="http://localhost/CGI_Perl/CGI2.cgi?position=1">
<FONT FACE="黑体">位访问本站点的朋友</FONT>
<HR SIZE="1">
</BODY>
</HTML>
CGI2.cgi
#标量$counterfile用来表示保存次数的文件的路径
$counterfile="F:/cgi_perl/counter.txt";
#/counter/ip.log用来保存访问的客户机的IP地址
$ipfile="F:/cgi_perl/ip.txt";
$imagefile{"0"}="F:/cgi_perl/0.gif";
$imagefile{"1"}="F:/cgi_perl/1.gif";
$imagefile{"2"}="F:/cgi_perl/2.gif";
$imagefile{"3"}="F:/cgi_perl/3.gif";
$imagefile{"4"}="F:/cgi_perl/4.gif";
$imagefile{"5"}="F:/cgi_perl/5.gif";
$imagefile{"6"}="F:/cgi_perl/6.gif";
$imagefile{"7"}="F:/cgi_perl/7.gif";
$imagefile{"8"}="F:/cgi_perl/8.gif";
$imagefile{"9"}="F:/cgi_perl/9.gif";
#为防止自己对计数器进行测试时它自动加1,可以通过IP的方式来控制
@ip_exclude=("172.16.69.17");
$|=1;
#打开记录次数的文件
open(NUMBER,"$counterfile");
$number=<NUMBER>;
close(NUMBER);
#打开保存IP地址的文件
open(IPINFO,"<$ipfile");
$ipnum=<IPINFO>;
close(IPINFO);
$values=$ENV{'QUERY_STRING'};
@queryresults=split(/&/,$values);
foreach $query(@queryresults)
{
($name,$value)=split(/=/,$query);
$QUERY{$name}=$value;
}
$position="$QUERY{'position'}";
#如果IP地址与@ip_exclude中的相同或最后的两次浏览来至同一个IP地址,
#计数器不加1
if(($ENV{'REMOTE_ADDR'} eq @ip_exclude) || ($ipnum eq $ENV{'REMOTE_ADDR'}))
{
open(NUMBER,"$counterfile");
print NUMBER ($number);
close NUMBER;
#保存IP地址
open(IPINFO,">$ipfile");
print IPINFO($ENV{'REMOTE_ADDR'});
close IPINFO;
}
else
{
$number++;
open(NUMBER,">$counterfile");
print NUMBER ($number);
close NUMBER;
open(IPINFO,">$ipfile");
print IPINFO ($ENV{'REMOTE_ADDR'});
close IPINFO;
}
if (($position>0) && ($position<=length($number)))
{
$pos_index=substr($number,(length($number)-$position),1);
}
else
{
$pos_index="0";
}
if ($imagefile{$pos_index})
{
$return=$imagefile{$pos_index};
}
else
{
$return=$imagefile{"0"};
}
#输出结果
print "Content-type:image/gif\n\n";
open(IMAGE,"<$return");
print <IMAGE>;
close(IMAGE);
exit (0);
#程序结束
大家帮我看看,谢谢!
[ 本帖最后由 mouse.rice 于 2008-8-25 10:32 编辑 ] |
|