|
Perl计数器 |
|
一、Unix WEB 服务器环境下
# Unix WEB服务器网页中的调用格式: # 欢迎你,第<!-- #exec cgi="/cgi-bin/count.pl?usr=yuyong&gif=a" -->位朋友。 Perl 源程序 $|=1; if($ENV{'REQUEST_METHOD'} eq "POST"){ read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'}); } elsif($ENV{'REQUEST_METHOD'} eq "GET") { $buffer=$ENV{'QUERY_STRING'}; } @pairs=split(/&/,$buffer); foreach $pair(@pairs) { ($name,$value)=split(/=/,$pair); $value=~tr/+//; $value=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; $FORM{$name}=$value; } $ct_lg=8; $ct_file="cgi-bin\\count\\$FORM{'T1'}"; print "Content-type:text/html\n\n"; if(-e "$ct_file") { open(file,"<$ct_file"); $cter=<file>; } else { $cter="0"; } close(file); $cter++; open(file,">$ct_file") || die "can't write file!\n"; print file $cter; close(file); $lg=length($cter); for ($i=0;$i<($ct_lg-$lg);$i++) { print "<img src=/cgi-bin/count/0.gif>"; } for($i=0;$i<$lg;$i++){ $gf=substr($cter,$i,1); print "<img src=/cgi-bin/count/$gf.gif>"; } exit(0); 二、NT IIS 或win95/98 Personal WEB环境下: 在此环境下不支持<img src="/cgi-bin/counter.pl?yuy&gif=e">和<!-- #exec cgi="/cgi-bin/counter.pl?yuy&gif=e" --> 这两种调用perl 计数器的方法,让我大伤脑筋。 我又用FrontPage 中的WebBot格式(<!-- webbot -->)也不行, 后来我用frame、javascript、perl结合起来,实现了自己的计数器。 该计数器支持多用户多显示规格,条件成熟的话还可为网友们提供免费计数服务。 Perl 源程序 # /cgi-bin/counter.pl?usr=<用户名>&gif=[a|b|c|d|e|f| |] # 非微软WEB服务器网页中的调用格式: # 欢迎你,第<!-- #exec cgi="/cgi-bin/count.pl?usr=yuyong&gif=a" -->位朋友。 $|=1; $buffer=$ENV{'QUERY_STRING'}; @pairs=split(/&/,$buffer); foreach $pair(@pairs) { ($name,$value)=split(/=/,$pair); $value=~tr/+//; $value=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; $FORM{$name}=$value; #获得counter.pl?usr=xx&gif=a传来的 } #参数,usr: xx gif: a $ct_lg=8; #计数器显示位数 $ct_file="$FORM{'usr'}.dat"; #可为不同页面或用户提供计数文件 if(-e "$ct_file") { #文件存在,便读方式打开 open(file,"<$ct_file"); $cter=<file>; } else { $cter="0"; #文件不存在,计数值为0 } close(file); $cter++; #计数值为+1 open(file,">$ct_file") || die "can't write file!\n"; print file $cter; #重写文件 close(file); $lg=length($cter); #获得计数值的8位长的字符串,不足补“0” for ($i=0;$i<($ct_lg-$lg);$i++) { $cter="0$cter"; } # 将计数值($cter)与字体样式($FORM{'gif'}) # 作为父页的JavaScript函数myload()的参数,并 # 调用parent.myload(x,y)。 print "Content-type:text/html\n\n"; print "<HTML>\n<BODY BGCOLOR=WHITE>\n"; print "<script language=\"JavaScript\">\n"; print "parent.myload\(\"$cter\",\"$FORM{'gif'}\"\);\n"; print "</script>\n</BODY>\n</HTML>"; exit(0); |