计数器原代码 --- 中文注释
计数器原代码

----------------------------------------------------------------------

#!/usr/bin/perl
#以上为perl解释程序在服务器中的目录,如果您的
#目录不同,需作相应改变。
# origin by:ben short
# upgrade by:杜经农
# ver 2.01
#程序农场出品
######################################################################
#
######################################################################

#------------------------------------------------------
#以下部分可以修改以符合您的站点情况
#------------------------------------------------------
#存放记数器数据的文件名,它将放于本perl程序同一目录内
$countname="counts.txt";

#是否记录访问者的IP地址。 (0=no, 1=yes)
$logip=1;

#服务器中date命令所在的目录
$datepath="/usr/bin/date";

#记录IP地址的文件,它将放于本perl程序同一目录内
$ipname="ipdata.txt";

#记数器图像所在的URL位置
$url="http://dujl.uhome.net/cgi-bin/";

#本记数器将要被放置于其上的站点
$server="dujl.uhome.net";

#以下为数字图像文件的特性值
$digext=".gif"; #gif文件
$digtype="a"; #a系列
$width = "15"; #图像显示的长与宽度
$height = "20";

#######################以下为主程序段,无需修改#########################
print "Content-type: text/html\n\n";

open(FILE, $countname);
$counter = <FILE>;
close(FILE);

sub counter {
  @data=split(":", $counter);
  $count=@data[0];
  $lastip=@data[1];
#以下比较访问者的IP地址与上一次的是否相同,如相同
#则不增加记数。
  if ($ENV{'REMOTE_ADDR'} ne $lastip) {
    $count=$count+1;
    }
  else {
    $count=$count+0;
    }


  @nums = split(//, $count);
  foreach $CountNr (@nums) {
    $printcount = "<img src=\"$url$CountNr$digtype$digext\" width=\"$width\" height=\"$height\" alt=\"$CountNr\">";
    print $printcount;
    }  
  }


sub write_count {
  open(FILE, ">$countname");
  print FILE "$count:$ENV{'REMOTE_ADDR'}";
  close(FILE);
  }

sub write_ip {
  $date=`$datepath`;
  chomp($date);
  open(FILE, ">>$ipname");
print FILE "$date $ENV{'REMOTE_ADDR'}\n";
  close(FILE);
  }

sub validate {
  if ($ENV{'HTTP_HOST'} eq "$server") {
    &counter;
    &write_count;
    if ($logip eq "1") {
      &write_ip;
      }
    }
  else {
    print "请不要使用别人的记数器";
    }
  }

&validate;