datafilename = $_datafilename;
$this -> datafilepath = $_datafilepath;
$this -> lockfilename = $_datafilepath.$_datafilename.".lock";
}
//----- ログの表示
function view($_datestr = ""){
if ($_datestr == "") $_datestr = date("Ymd");
$_filename = $this -> datafilepath.$this -> datafilename.$_datestr.$this -> datafileext;
if (file_exists($_filename)) {
$_fp = fopen($_filename,"r");
} else {
$this -> errormessage = "logfile not found.";
return false;
}
$i = 1;
while ($data = fgets($_fp,1000)){
print $i.":".$data."
\n";
++$i;
}
fclose($_fp);
return true;
}
//----- ログ保存
function write() {
$_ref = getenv("HTTP_REFERER");
$_rhost = @gethostbyaddr(getenv("REMOTE_ADDR"));
// 無視リモホからのアクセスはパス
for ($i=0;$iremotehostx);$i++){
if (ereg($this->remotehostx[$i],$_rhost)){
$this -> errormessage = "ignore remote host";
return false;
}
}
//同一ファイルチェック
if($_ref != ""){
$url_a = getenv("HTTP_HOST").getenv("SCRIPT_NAME"); //実行URL
if(ereg($url_a,$_ref)){
$this->errormessage = "same file.";
return false;
}
}
//----- ログのデータ化
$_log = getenv("SCRIPT_NAME").",".time().",".getenv("REMOTE_ADDR").",".strtr(getenv("HTTP_USER_AGENT"),',',' ').",".getenv("HTTP_REFERER").",".$_rhost."\n";
//----- ファイルのロック
$_lockfp = fopen($this -> lockfilename,"w");
flock($_lockfp, LOCK_EX);
//----- ログの書き出し
$_filename = $this->datafilepath.$this->datafilename.date("Ymd").$this->datafileext;
$_fp = fopen($_filename,"a");
if (!$_fp) {
$this->errormessage = "file cannot open.";
$ret_code = false;
} else {
fputs($_fp,$_log);
fclose($_fp);
@chmod($_filename,0666);
$ret_code = true;
}
//----- ロックの解除
flock($_lockfp, LOCK_UN);
fclose($_lockfp);
unlink($this->lockfilename);
return $ret_code;
}
};
?>