"" && stristr($ipaddr,$ExceptionIP[$i])<> FALSE) return 1; } if($host=="") return 0; for( $i=0 ; $i < count($ExceptionHOST) ; $i++) { if($ExceptionHOST[$i] <> "" && stristr($host,$ExceptionHOST[$i]) <> FALSE) return 1; } return 0; } //カウンタファイル入出力処理 function CountRead($mode , $page) //mode 0: 読み出しのみで、カウンタを増やさない // 1: カウンタを増やし、記録 // 2: 今日の数を返す(カウンタを増やさない) // 3: 昨日の数を返す(カウンタを増やさない) { global $DataDir; $fname = $DataDir . "count_" . $page. ".dat"; if( @file_exists ($fname) ) { $fp = @fopen ($fname,"r+"); $ex_flag=1; } else $fp = @fopen ($fname,"w"); if($fp == FALSE) exit(); if($mode == 1) { if( !@flock($fp, LOCK_EX) ) exit(); //write mode } else { if( !@flock($fp, LOCK_SH) ) exit(); //read only mode } if($ex_flag) { $count = (int)fgets($fp, 256); $today = (int)@fgets($fp, 256); $yesterday = (int)@fgets($fp, 256); $LastUpdate= @fgets($fp, 256); if($mode == 1) //カウンタの値を増やす { $count++; $tmp_last = getdate( strtotime($LastUpdate) ); $tmp_now = getdate(); $tmp_yes = getdate( strtotime ("-1 day") ); if($tmp_last['yday'] != $tmp_now['yday']) { if($tmp_last['yday']==$tmp_yes['yday']) $yesterday=$today; else $yesterday=0; $today = 0; } $today++; } } else $count=1; if($mode == 1) //カウンタファイルに保存 { @ftruncate( $fp, 0); //ファイルサイズを0に @rewind($fp); @fputs($fp, $count . " ;total\n" ); @fputs($fp, $today . " ;today\n" ); @fputs($fp, $yesterday." ;yesterday:\n" ); @fputs($fp, date("Y/m/d H:i:s")."\n" ); } @fclose ($fp); switch( $mode ) { default: case 0: case 1: return $count; case 2: return $today; case 3: return $yesterday; } } function MakeImage($number , $mode) //$mode: 0:トータル数 1:昨日・今日 { global $ViewFigures; global $ImgSize_number_x; global $ImgSize_number_y; global $ImageSrcName ; global $SubViewFigures; global $SubImgSize_number_x; global $SubImgSize_number_y; global $SubImageSrcName ; global $ImageSrcType; if($number<0 || $number>9999999999) $number=0; //header("Content-Disposition: filename=\"count.png\""); $head_str[0] = "Content-type: image/png"; $head_str[1] = "Content-type: image/gif"; $head_str[2] = "Content-type: image/jpeg"; $head_str[3] = "Content-type: image/bmp"; if($mode==0) { $img_fname = $ImageSrcName; $size_x = $ImgSize_number_x; $size_y = $ImgSize_number_y; $figures = $ViewFigures; } else { $img_fname = $SubImageSrcName; $size_x = $SubImgSize_number_x; $size_y = $SubImgSize_number_y; $figures = $SubViewFigures; } switch($ImageSrcType) { default: case 0: $src_img = @imagecreatefrompng ($img_fname);break; case 1: $src_img = @imagecreatefromgif ($img_fname);break; case 2: $src_img = @imagecreatefromjpeg ($img_fname);break; case 3: $src_img = @imagecreatefrombmp ($img_fname);break; } if (!$src_img) //読み込みエラー発生 { header($head_str[0]); $img = @imagecreate(160,16); //空の画像を作成 $bgc = @ImageColorAllocate ($img,0,0,0); $tc = @ImageColorAllocate ($img,255,255,0); @ImageFilledRectangle($img,0,0,160,16,$bgc); @ImageString ($img,2,4,0,"Error loading imgage file",$tc); @ImagePng($img); return; } header($head_str[$ImageSrcType]); $CounterImage = @imagecreate($size_x * $figures, $size_y ); //空の画像を作成 $str = sprintf("%0{$figures}d", $number) ; for($i=0; $i < $figures ; $i++) { @ImageCopy($CounterImage, $src_img , $size_x * $i , 0 ,($size_x * ($str{$i}) ),0,$size_x, $size_y); } @ImagePng($CounterImage); } //アクセスログ書き込み関数 function WriteLog($now,$count,$ref,$page,$host,$visit,$LastVisit) { global $PageIndex; global $ApacheMode; global $FnameAccessLog; //$now 現在時刻 //$count アクセスカウント //$host 接続元ホスト //$dd 日時 //$p_name 表示したページ //$ref リンク元(Referer) //$visit その人の訪問回数 //$LastVisit その人の前回の訪問日 //$user_agent ブラウザの種類 //$server_protocol HTTP/1.0 or 1.0 の情報 $p_name = "/" . $PageIndex[$page]; //if($p_name=="") $p_name = "/"; $user_agent = $_SERVER['HTTP_USER_AGENT']; $server_protocol = $_SERVER['SERVER_PROTOCOL']; if(strlen($ref)>512) $ref = substr($ref,0,512); if($ApacheMode) { //Apache互換形式で記録する場合 $LastVisit = date("m/d H:i" , $LastVisit); //前回の訪問日を書式化 $dd = date("d/M/Y:H:i:s +0",$now) . (date("Z",$now)/36) ; $str = sprintf( "%s - - [%s] \"GET %s %s\" 200 300 \"%s\" \"%s\"\n" ,$host,$dd, $p_name,$server_protocol, $ref,$user_agent ); } else { //標準形式で記録 //スペースを変換 $user_agent = str_replace ( " ", "%20", $user_agent); $p_name = str_replace ( " ", "%20", $p_name); $ref = str_replace ( " ", "%20", $ref); $str="{$count}\t{$now}\t{$host}\t{$p_name}\t{$ref}\t{$LastVisit}\t{$visit}\t{$user_agent}\n"; } //ファイル書き込み $fp = @fopen ( $FnameAccessLog,"a+"); if( !@flock($fp, LOCK_EX) ) exit(); //ロック @fputs($fp, $str ); @fclose($fp); } //キリ番かどうかをチェックする関数 function kiriban_check($count) { global $kiribantani; global $sp_kiriban; global $flag_Exception; //除外IP global $flag_renzoku_access; if($flag_Exception || $flag_renzoku_access) return 0; if($kiribantani && ($count % $kiribantani) ==0) return 1; for($i=0 ; $i < count($sp_kiriban) ; $i++) { if( $count == $sp_kiriban[$i] ) return 1; } return 0; } //GDライブラリを使用せずに数字画像を並べて表示する場合の処理 function NonGDimgWrite($number , $figures) { global $ImageSrcType; switch($ImageSrcType) { default: case 0: $imgt = "png"; break; case 1: $imgt = "gif"; break; case 2: $imgt = "jpg"; break; case 3: $imgt = "bmp"; break; }; if($number<0 || $number>9999999999) $number=0; $str = sprintf("%0{$figures}d", $number) ; for($i=0; $i < $figures ; $i++) { $tag = sprintf("" , ($str{$i}) , $imgt); print "document.write(\"$tag\");"; } } function PrintJS_image($number) { global $ViewFigures; global $UseGD; if($UseGD) { ?>document.write(""); function GetName() { name=prompt(istr,DefName); if(name=="null" || name=="") name=DefName; url_sendname = "counter.php?mode=sendname&