免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2229 | 回复: 7
打印 上一主题 下一主题

这段perl计数器代码哪里出了问题[未解决] [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-25 08:48 |只看该作者 |倒序浏览
前日看到了一段代码,关于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 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-08-25 09:46 |只看该作者
太长了,

论坛徽章:
0
3 [报告]
发表于 2008-08-25 09:47 |只看该作者
等高手来看

论坛徽章:
0
4 [报告]
发表于 2008-08-25 10:33 |只看该作者
排版还算整齐吧~
求教!

论坛徽章:
0
5 [报告]
发表于 2008-08-25 10:45 |只看该作者
相当的整齐,只是俺一看到html就烦,看不下去
easyworld 该用户已被删除
6 [报告]
发表于 2008-08-25 12:20 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
7 [报告]
发表于 2008-08-25 13:03 |只看该作者
if(($ENV{'REMOTE_ADDR'} eq @ip_exclude) || ($ipnum eq $ENV{'REMOTE_ADDR'}))


$ENV{'REMOTE_ADDR'}  #  ip地址

eq @ip_exclude  #  在这儿代表数组的个数  不是数组的内容
                   #  在你的程序里它等于 1  而不是  172.16.69.17

ip地址 eq  1  没有任何意义的判断

[ 本帖最后由 hitsubunnu 于 2008-8-25 13:29 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2008-08-25 13:30 |只看该作者
ls 真仔细。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP