# Image Counter
# by DesignPine
#
class ImageCount{
var $logfile = "./icount.dat"; /* 実行するファイルからのログファイルへのパス */
var $imgdir = "./img/"; /* カウンタ画像のあるディレクトリパス(実行するファイルからの)
ディレクトリに入れる画像は、0.gif, 1.gif・・・・9.gifとして下さい。*/
var $dblcnt = 0; /* 直前の同一IPをカウントする(する=1;しない=0) */
var $getcookie = 0; /* クッキーを使用するか(する=1;しない=0) */
var $dispnum = 3; /* 表示桁数 */
function WriteCount(){
/*
直前IP[0]
直前時間[1]
今日[2] カウント
昨日[3] カウント
合計[4] カウント
*/
//ip取得
$myip = $_SERVER['REMOTE_ADDR'];
if($this->getcookie)
{
//クッキー取得
if(isset($_COOKIE['daily'])):
$cookie_time = $_COOKIE['daily'];
else:
setcookie( "daily",gmdate("ymd",time()+3600*9) );
endif;
}
$fp = fopen($this->logfile,"r+");
flock($fp,LOCK_EX);
$dat = fread( $fp, filesize($this->logfile) );
list($p_ip,$p_time,$today,$yesterday,$total) = explode(",",$dat);
if($today=="") $today=0;
if($yesterday=="") $yesterday=0;
if($total=="") $total=0;
$time = gmdate("ymd",time()+3600*9);
//日にちが変わっていたらスライド
if($time!=$p_time):
$yesterday=$today;
$today=0;
endif;
//IPが異なっていたら書き込み
if($p_ip!=$myip || $this->dblcnt):
if($this->getcookie){
if($cookie_time!=$time):
$today++;
$total++;
$ip = $myip;
setcookie( "daily",$time );
else:
$ip = $p_ip;
endif;
}else{
$today++;
$total++;
$ip = $myip;
}
else:
$ip = $p_ip;
endif;
//最終書込
$arr_count = Array($ip,$time,$today,$yesterday,$total);
$newdat= implode(",",$arr_count);
ftruncate($fp,0);
rewind($fp);
fputs($fp,$newdat);
flock($fp,LOCK_UN);
fclose($fp);
}
function ReadCount(){
$fp = fopen($this->logfile,"r+");
flock($fp,LOCK_EX);
$dat = fread( $fp, filesize($this->logfile) );
list(,,$today,$yesterday,$total) = explode(",",$dat);
print "";
print "Today";
$this->ChangeImage($today);
print " Yesterday";
$this->ChangeImage($yesterday);
print " Since21May";
$this->ChangeImage($total);
print "";
flock($fp,LOCK_UN);
fclose($fp);
}
function ChangeImage($dat){
for($j=0;$j<$this->dispnum-strlen($dat);$j++){
print "
";
}
for($i=0;$i";
print $imgnum;
endfor;
}
}
$c_icount = new ImageCount;
$c_icount->WriteCount();
$c_icount->ReadCount();
?>