2000/03/29 (水) 05:27:40 ▼ ◇ [mirai]SSIカウソタに適当に変更を加えたヽ(´ー`)ノ
#!/usr/local/bin/perl
$BDIR = ""; # Base directory
$BASE = "ssic"; # Default basename
if(defined($ARGV[0]))
{
$BASE = $ARGV[0];
} else {
$BASE = $ENV{"QUERY_STRING"} if(defined($ENV{"QUERY_STRING"}));
}
$BASE =~ s/\0//g;
$BASE =~ s/([\&;\`'\\\|"*?~<>^\(\)\[\]\{\}\$\n\r])/\\$1/g;
$BASE =~ s/\.\.\///g;
$BLOCK = 1024;
$CFILE = "$BDIR$BASE.ct";
$BFILE = "$BDIR$BASE.bt";
&error(1, "$CFILE Not Found") unless(-e $CFILE);
&error(1, "$BFILE Not Found") unless(-e $BFILE);
open(COUNT, ">>$CFILE") || &error(1, "Cannot open $CFILE");
print COUNT "a";
close(COUNT);
if($BLOCK <= (-s $CFILE))
{
open(BLOCK, ">>$BFILE") || &error(1, "Cannot open $BFILE");
print BLOCK "a";
close(BLOCK);
open(COUNT, ">$CFILE") || &error(1, "Cannot open $CFILE");
close(COUNT);
}
$count = (((-s $BFILE) || 0) * $BLOCK) + (-s $CFILE);
print "Content-type: text/plain\n\n";
printf "%d", $count;
exit;
sub error
{
$exit = shift(@_);
print "Content-type: text/plain\n\n";
print "@_";
exit if($exit);
}
<!--#exec cgi="dual/ssic.cgi?xx"-->
とか
<!--#exec cgi="dual/ssic.cgi xx"-->
見たいに(サーバによる)呼びだすと$BASEを設定できる。
$BASEを変える場合は変える名前で*.ctと*.btを作っておくことが必要