#!/usr/local/bin/perl #========================================================================= $ver="Cool Count ver 2.0"; # # Cool and Cool http://www.coolandcool.net/ # しょういち webmaster@coolandcool.net #========================================================================= # /_________設定項目_____________________________________________________/ $log = "count.txt"; # ログファイル $count_log = "count.js"; # カウンターファイル $dummy = "dummy.gif"; # ダミー画像 $number = "5"; # 桁数 $ip_check = 0; # IPチェック(1=ON,0=OFF) # /_________処理開始_____________________________________________________/ &get_host; open(LOCK,">lock.dat"); eval { flock(LOCK,2); }; open(DB,"$log") || &error("$logファイルが開けません。"); $lines=; close(DB); unlink("lock.dat"); eval { flock(LOCK,8); }; close(LOCK); ($count,$host_m) = split(/<>/, $lines); if ( $ip_check ) { if ( $host_m eq $host ) { &print_gif; exit } } $count++; open(LOCK,">lock.dat"); eval { flock(LOCK,2); }; open(DB,">$log") || &error("$logファイルが開けません。"); print DB "$count<>$host<>"; unlink("lock.dat"); eval { flock(LOCK,8); }; close(LOCK); $length = length ($count); while ( $length < $number ) { $count = '0' . $count; ++$length; } @cnts = split(//,$count); $count = ""; foreach ( 0 .. $#cnts ) { $count="$count"; } open(LOCK,">lock2.dat"); eval { flock(LOCK,2); }; open(CN,">$count_log") || &error("$count_logファイルが開けません。"); print CN "document.write('$count');"; close(CN); unlink("lock2.dat"); eval { flock(LOCK,8); }; close(LOCK); &print_gif; exit; # /_________ホスト取得___________________________________________________/ sub get_host { $host = $ENV{'REMOTE_HOST'}; $addr = $ENV{'REMOTE_ADDR'}; if ( $host eq "" || $host eq $addr ) { $host = gethostbyaddr(pack('C4',split(/\./,$host)),2) || $addr; } } # /_________ダミー画像表示_______________________________________________/ sub print_gif { print "Content-type: image/gif\n\n"; open(GIF,"$dummy"); binmode(GIF); binmode(STDOUT); print ; close(GIF); exit; } # /_________エラールーチン_______________________________________________/ sub error { print "Content-type: text/html\n\n"; print "
error
"; print "

$_[0]



\n"; exit; } exit;