true, 'PPID' => true, 'PTITLE' => true, 'ns' => true, 'TPRM' => true, 'SIN' => true, ); /** * set this */ $strip_params = array( 'osCsid' => true, 'ktp' => true, 'UASEG' => true, 'tprm' => true, 'PHPSESSID' => true, ); foreach($valid_params as $param => $val) { if(!$val) { $_GET[$param] = ''; $_POST[$param] = ''; continue; } if(isset($_GET[$param])) { $_GET[$param] = $misc->sanitize_value($_GET[$param]); } elseif(isset($_POST[$param])) { $_GET[$param] = $misc->sanitize_value($_POST[$param]); } else { $_GET[$param] = ''; } } /** * user configuration */ $userconfig = new userConfig($config,$misc); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // 管理者登録はスキップする //________________________________________________ $ADMIN_SESSID_NAME = $config->ADMIN_SESSID_NAME; if(isset($_COOKIE[$ADMIN_SESSID_NAME])) { printImg(); exit; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // ホスト名、IPアドレス //________________________________________________ if(!isset($_SERVER['REMOTE_HOST'])) { $_SERVER['REMOTE_HOST'] = @gethostbyaddr($_SERVER['REMOTE_ADDR']); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // スキップホスト指定 //________________________________________________ if(isset($userconfig->config_skip_host[$_SERVER['REMOTE_ADDR']]) or isset($userconfig->config_skip_host[$_SERVER['REMOTE_HOST']])) { printImg(); exit; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Javascript 無効ブラウザ //________________________________________________ if($_GET['ns']) { if(!$_GET['PID']) { $_GET['PID'] = getenv('HTTP_REFERER'); if(!$_GET['PID']) { $_GET['PID'] = $_SERVER['DOCUMENT_URI']; } } // if(!$_GET['PPID']) { $_GET['PPID'] = 'NO_SCRIPT'; } } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // PID,PPID置換処理 //________________________________________________ $pid_rep = false; $ppid_rep = false; if($userconfig->config_rep_url) { foreach($userconfig->config_rep_url as $uri => $title) { if($pid_rep and $ppid_rep) { break; } if(empty($title)) { $title = 'REP_URL'; } if(!$pid_rep and ereg($uri,$_GET['PID'])) { $pid_purl = parse_url($_GET['PID']); // protocol added if(eregi("(http://|https://)",$config->SESSID_DOMAIN)) { $orig_purl = parse_url($config->SESSID_DOMAIN); if(!isset($orig_purl['path'])) { $orig_purl['path'] = ''; } $orig_host_dir = $orig_purl['host'] . $orig_purl['path']; $_GET['PID'] = ereg_replace($pid_purl['host'],$orig_host_dir . $title,$_GET['PID']); // pure domain } else { $_GET['PID'] = ereg_replace($pid_purl['host'],"{$config->SESSID_DOMAIN}/$title",$_GET['PID']); } $pid_rep = true; } if($_GET['PPID']) { if(!$ppid_rep and ereg($uri,$_GET['PPID'])) { $ppid_purl = parse_url($_GET['PPID']); // protocol added if(eregi("(http://|https://)",$config->SESSID_DOMAIN)) { $orig_purl = parse_url($config->SESSID_DOMAIN); if(!isset($orig_purl['path'])) { $orig_purl['path'] = ''; } $orig_host_dir = $orig_purl['host'] . $orig_purl['path']; $_GET['PPID'] = ereg_replace($ppid_purl['host'],$orig_host_dir . $title ,$_GET['PPID']); // pure domain } else { $_GET['PPID'] = ereg_replace($ppid_purl['host'],"{$config->SESSID_DOMAIN}/$title",$_GET['PPID']); } $ppid_rep = true; } } } } // //# ここまでで PID PPID が決定される // //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // ドメインによるロギング対象URL判定 //________________________________________________ if(!eregi($config->SESSID_DOMAIN,$_GET['PID'])) { printImg(); exit; } if($_GET['PID']) { $_GET['PID'] = strip_params_from_url($_GET['PID'],$strip_params); } if($_GET['PPID']) { $_GET['PPID'] = strip_params_from_url($_GET['PPID'],$strip_params); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // 不正アクセス判定(TEST) //________________________________________________ if(!$pid_rep and !$ppid_rep) { $ref_check = getenv('HTTP_REFERER'); if($ref_check) { if(eregi($config->SESSID_DOMAIN,$ref_check)) { $check = 'VALID'; } else { $check = '__INVALID__'; //printImg(); //exit; } } else { $check = 'NO_REFERER'; } /* $fp = fopen('invalid.txt','a'); fwrite($fp,"$ref_check $check $_GET['PTITLE'] $_SERVER[QUERY_STRING]\n"); fclose($fp); */ } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // STIME //________________________________________________ if(!$config->LTIMEOFFSET) { $config->LTIMEOFFSET = 0; } $ltimeoffset = 60*60*$config->LTIMEOFFSET; $stime = time() + $ltimeoffset; $date_info = @getdate($stime); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // ID 発行処理 //___________________________________________________ $sessid_expire = time() + 60*60*24*365; // COOKIE 有効期限 1年間(共通) $SESSID_NAME = 'MRLITESESSID'; $ID_TOKEN = ''; if($_GET['TPRM']) { $ID_TOKEN = $_GET['TPRM']; } else { $ID_TOKEN = $_SERVER['REMOTE_ADDR']; } $last_visit_epoc = 0; $last_date_info = false; if(!isset($_COOKIE[$SESSID_NAME])) { // クッキーが使用不可か,最初のアクセス $SESSID = $ID_TOKEN . ' ' . microtime() . ' ' . $stime; // クッキー発行 @setcookie("$SESSID_NAME","$SESSID",$sessid_expire,"{$config->COOKIE_PATH}","{$config->COOKIE_DOMAIN}"); $VIS_TMP = true; } else { // クッキーがありました $tmp_array = explode(' ',$_COOKIE[$SESSID_NAME]); if(!empty($tmp_array[3])) { $last_visit_epoc = $tmp_array[3]; $last_date_info = @getdate($last_visit_epoc); } $tmp_array[3] = $stime; $SESSID = implode(' ',$tmp_array); @setcookie("$SESSID_NAME","$SESSID",$sessid_expire,"{$config->COOKIE_PATH}","{$config->COOKIE_DOMAIN}");// ID 更新 } /** * * out put image * */ printImg(); // // 閲覧画面からのアクセスはリンク元を消す $userCntrlUrl = $config->ANA_LOG_SCRIPT_URL; if(!empty($_GET['PPID'])) { if(@ereg($userCntrlUrl,$_GET['PPID'])) { $_GET['PPID'] = ''; } } //--- PID SKIP if(empty($_GET['PID'])) {exit;} //--- PPID SKIP if(ereg($config->GET_LOG_SCRIPT_NAME,$_GET['PPID'])) { exit;} //--- User Agent $UA_SET = array( 'platform' => '', 'platformV' => '', 'browser' => '', 'browserV' => ''); $ua = $_SERVER['HTTP_USER_AGENT']; $UA_SET = get_ua_set($ua); $UA_SET['platform'] = ereg_replace(" ","\\0",$UA_SET['platform']); $UA_SET['platformV'] = ereg_replace(" ","\\0",$UA_SET['platformV']); $UA_SET['browser'] = ereg_replace(" ","\\0",$UA_SET['browser']); $UA_SET['browser'] .= '###' . $_SERVER['HTTP_USER_AGENT']; $UA_SET['browserV'] = ereg_replace(" ","\\0",$UA_SET['browserV']); //--- Page Title $page_title = rawurldecode($_GET['PTITLE']); $page_title_orig = $page_title; if(!$_GET['PTITLE'] or $_GET['PTITLE'] === 'undefined') { //$page_title = '---'; if($page_title = $misc->get_page_title($_GET['PID'])) { $page_title = mb_substr($page_title,0,40);// 40文字 } else { $page_title = '---'; } } else { $enc = mb_detect_encoding($page_title,'auto'); if($enc != 'EUC-JP' and $enc != 'SJIS' and $enc != 'JIS' and $enc != 'UTF-8') { $page_title = uniDecode($page_title,'euc-jp'); } else { $page_title = mb_convert_encoding($page_title,'EUC-JP','auto'); } $page_title = mb_ereg_replace(' ',' ',$page_title); } $page_title = strip_tags($page_title); $page_title = str_replace('<','',$page_title); $page_title = str_replace('>','',$page_title); $page_title = mb_substr($page_title,0,40); //--- SearchEngine & KeyWords $EX_REF = false; $SESSION_IN = 0; $se_name = ''; $kword = ''; $rank = ''; $rank_error = ''; if(!empty($_GET['PPID'])) { if(ereg("^h(ttp:|ttps:)",$config->SESSID_DOMAIN)) { // 独自ドメイン以外のサイト用 $parsed['host'] = $_GET['PPID']; } else { $parsed = parse_url($_GET['PPID']); } if(!ereg($config->SESSID_DOMAIN,$parsed['host'])) { // 外部リンク元あり $EX_REF = true; $SESSION_IN = 1; //_______________________ $SE_WORD = get_kword($_GET['PPID'],$config->SESSID_DOMAIN); $se_name = $SE_WORD['se']; $kword = $SE_WORD['word']; if(!empty($kword)) { $kword = htmlentities($kword,0,'EUCJP'); } $rank = $SE_WORD['rank']; $rank_error = $SE_WORD['rank_error']; if($kword) { $kword = mb_ereg_replace(' ',' ',$kword); } } else { //~~~~~~~~~~~~~~~~~~~~~~~~~~~ // サイト内移動 // $EX_REF = false; $SESSION_IN = 0; $se_name = ''; $kword = ''; $rank = ''; } } else { //~~~~~~~~~~~~~~~~~~~~~~~~ // ダイレクトアクセス // $EX_REF = true; $SESSION_IN = 1; } if($_GET['SIN']) { $SESSION_IN = 1; } $_GET['PPID'] = ereg_replace(' ','+',$_GET['PPID']); // //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // オリジナル生ログファイル //_______________________________________________ $date = array(); $date = explode('-',date('Y-n-j-G',$stime)); $YEAR = $date[0]; $MONTH = $date[1]; $DAY = $date[2]; $HOUR = $date[3]; $LOG_DIR = $config->LOG_DIR; $insert_log_file = $LOG_DIR . '/' . $config->RAW_LOG_FILE_HEAD . $YEAR . '-' . $MONTH . '-' . $DAY . $config->LOG_FILE_FOOT; $insert_data = ''; $insert_data_array = array( $stime, $SESSID, $_SERVER['REMOTE_ADDR'], $_SERVER['REMOTE_HOST'], $_GET['PID'], $_GET['PPID'], $UA_SET['platform'], $UA_SET['platformV'], $UA_SET['browser'], $UA_SET['browserV'], $page_title, $se_name, $kword, $rank, $rank_error, $SESSION_IN, date('Y-n-j H:i:s',$stime)); $insert_data = implode($config->LOG_DLMTR,$insert_data_array); $insert_data .= "\n"; include_once 'svis_host.php'; include_once 'pvis_sessid.php'; if(!is_dir($LOG_DIR)) { @mkdir($LOG_DIR,0777); } @chmod($LOG_DIR,0777); $lock_file = "$LOG_DIR/lock.cgi"; $LOCK = @fopen("$lock_file", "r+"); // ファイルがなかった場合、ファイルを作る。 if( !$LOCK ) { $LOCK = fopen("$lock_file", "w"); } set_file_buffer($LOCK, 0); flock($LOCK, LOCK_EX); rewind($LOCK); $LBUF = fgets($LOCK, 1000000); if( !$LBUF ) { $LBUF = 1; } else { $LBUF++; } $svis_log_file = $LOG_DIR . '/' . $config->SVIS_LOG_FILE_HEAD . $YEAR . '-' . $MONTH . '-' . $DAY . $config->LOG_FILE_FOOT; $pvis_log_file = $LOG_DIR . '/' . $config->PVIS_LOG_FILE_HEAD . $YEAR . '-' . $MONTH . '-' . $DAY . $config->LOG_FILE_FOOT; $hpv_log_file = $config->HPV_LOG_FILE_HEAD . $YEAR . '-' . $MONTH . '-' . $DAY . $config->LOG_FILE_FOOT; $dpv_log_file = $config->DPV_LOG_FILE_HEAD . $YEAR . '-' . $MONTH . $config->LOG_FILE_FOOT; $mpv_log_file = $config->MPV_LOG_FILE_HEAD . $YEAR . $config->LOG_FILE_FOOT; $se_log_file = $config->SE_LOG_FILE_HEAD . $YEAR . $config->LOG_FILE_FOOT; $dse_log_file = $config->SE_LOG_FILE_HEAD . $YEAR . '-' . $MONTH . $config->LOG_FILE_FOOT; $LOCK_DIR = "$LOG_DIR/LOCK"; if(!file_exists("$LOG_DIR/$hpv_log_file")) { touch("$LOG_DIR/$hpv_log_file"); $hpv_init = true; @chmod("$LOG_DIR/$hpv_log_file",0666); } else { $hpv_init = false; @chmod("$LOG_DIR/$hpv_log_file",0666); } if(!file_exists("$LOG_DIR/$dpv_log_file")) { touch("$LOG_DIR/$dpv_log_file"); $dpv_init = true; @chmod("$LOG_DIR/$dpv_log_file",0666); } else { $dpv_init = false; @chmod("$LOG_DIR/$dpv_log_file",0666); } if(!file_exists("$LOG_DIR/$mpv_log_file")) { touch("$LOG_DIR/$mpv_log_file"); $mpv_init = true; @chmod("$LOG_DIR/$mpv_log_file",0666); } else { $mpv_init = false; @chmod("$LOG_DIR/$mpv_log_file",0666); } if($se_name) { if(!file_exists("$LOG_DIR/$se_log_file")) { touch("$LOG_DIR/$se_log_file"); $se_init = true; @chmod("$LOG_DIR/$se_log_file",0666); } else { $se_init = false; @chmod("$LOG_DIR/$se_log_file",0666); } if(!file_exists("$LOG_DIR/$dse_log_file")) { touch("$LOG_DIR/$dse_log_file"); $dse_init = true; @chmod("$LOG_DIR/$dse_log_file",0666); } else { $dse_init = false; @chmod("$LOG_DIR/$dse_log_file",0666); } } else { $se_init = false; $dse_init = false; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // ページビジター判定 //________________________________________ $PVIS_COOKIE_NAME = 'PVIS'; $pvis_page = array(); $pvis_expire = mktime(23,59,59,$MONTH,$DAY,$YEAR,0); $pvisit = false; $svisit = false; $pvisit = save_pvis_sessid($pvis_log_file,$_GET['PID'],$ID_TOKEN); // /** * * pvis 判定の以下フローは精度が低いため廃止 if(!$_GET['TPRM']) { if(isset($_COOKIE[$PVIS_COOKIE_NAME])) { $pvis_page = explode(' ',$_COOKIE[$PVIS_COOKIE_NAME]); $pvis_page_flp = array_flip($pvis_page); if(!isset($pvis_page_flp[$_GET['PID']])) { array_push($pvis_page,$_GET['PID']); $new_pvis_cookie_value = implode(' ',$pvis_page); @setcookie("$PVIS_COOKIE_NAME",$new_pvis_cookie_value,$pvis_expire,"{$this->config->COOKIE_PATH}","{$this->config->COOKIE_DOMAIN}"); $pvisit = true; } } else { $new_pvis_cookie_value = $_GET['PID']; @setcookie("$PVIS_COOKIE_NAME",$new_pvis_cookie_value,$pvis_expire,"{$this->config->COOKIE_PATH}","{$this->config->COOKIE_DOMAIN}"); $pvisit = true; } } else { $pvisit = save_pvis_sessid($pvis_log_file,$_GET['PID'],$_GET['TPRM']); } */ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // ビジター判定(カウンター用) //________________________________________ /** * * 前回アクセス記録あり(クッキーによる判定) * */ if($last_date_info) { if($date_info['year'] == $last_date_info['year'] and $date_info['mon'] == $last_date_info['mon'] and $date_info['mday'] == $last_date_info['mday']) { $svisit = false; } else { // // 本日ビジターの可能性あり // 日を跨ぐアクセスはカウントしない // ということは,リンク元が外部か空のときのみ // if($EX_REF) { if(file_exists($svis_log_file)) { if($nc_file_array = file($svis_log_file)) { $ip_array = explode(' ',$nc_file_array[0]); $ip_cnt = array_count_values($ip_array); if(!isset($ip_cnt[$ID_TOKEN])) { // IP 保存 save_svis_host($svis_log_file,$ID_TOKEN); $svisit = true; } else { $svisit = false; } } } else { $svisit = true; // IP 保存 save_svis_host($svis_log_file,$ID_TOKEN); } } else { $svisit = false; } } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // クッキー記録なし //______________________________ } else { if($EX_REF) { // 外部からのアクセスの場合のみ // // クッキー拒否ホストかどうか問い合わせる // if(file_exists($svis_log_file)) { if($nc_file_array = file($svis_log_file)) { $ip_array = explode(' ',$nc_file_array[0]); $ip_cnt = array_count_values($ip_array); if(!isset($ip_cnt[$ID_TOKEN])) { // IP 保存 save_svis_host($svis_log_file,$ID_TOKEN); $svisit = true; } else { $svisit = false; } } } else { $svisit = true; // IP 保存 save_svis_host($svis_log_file,$ID_TOKEN); } } else { $svisit = false; } } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // 書き込み //____________________________________ // hpv if($hpv_init) { // 初期状態 // pv_hour vis_hour // pid,{0 0 0 ...0},pv_total,{0 0 0 ...0},pvis_total,{0 0 0 ...0},svis_total,{0 0 0 ...0},in_total,title $pv_hour = array_fill(0,24,0); $pvis_hour = array_fill(0,24,0); $svis_hour = array_fill(0,24,0); $pv_hour[$HOUR]++; $pvis_hour[$HOUR]++; if($svisit) { $svis_hour[$HOUR]++; } $pv_hour_line = implode(' ',$pv_hour); $pvis_hour_line = implode(' ',$pvis_hour); $svis_hour_line = implode(' ',$svis_hour); $hpv_data = $_GET['PID'] . ',' . $pv_hour_line . ',' . 1 . ',' . $pvis_hour_line . ',' . 1 . ',' . $svis_hour_line . ','; if($svisit) { $hpv_data .= 1 . ',' . $page_title . "\n"; } else { $hpv_data .= 0 . ',' . $page_title . "\n"; } if($fp = fopen("$LOG_DIR/$hpv_log_file",'a')) { set_file_buffer($fp, 0); flock($fp, LOCK_EX); fwrite($fp,$hpv_data); flock($fp, LOCK_UN); fclose($fp); } } else { unset($new_data,$found); $new_data = ''; $found = false; if($file_array = file("$LOG_DIR/$hpv_log_file")) { foreach($file_array as $line) { $line = rtrim($line); $line_array = explode(',',$line); if($line_array[0] == $_GET['PID']) { $found = true; $io_op = 'w'; $pv_total = $line_array[2]; $pv_total++; $pvis_total = $line_array[4]; $svis_total = $line_array[6]; $pv_hour = explode(' ',$line_array[1]); $pvis_hour = explode(' ',$line_array[3]); $svis_hour = explode(' ',$line_array[5]); if($pvisit) { $pvis_hour[$HOUR]++; $pvis_total++; } if($svisit) { $svis_hour[$HOUR]++; $svis_total++; } $pv_hour[$HOUR]++; $pv_hour_line = implode(' ',$pv_hour); $pvis_hour_line = implode(' ',$pvis_hour); $svis_hour_line = implode(' ',$svis_hour); $line = $_GET['PID'] . ',' . $pv_hour_line . ',' . $pv_total . ',' . $pvis_hour_line . ',' . $pvis_total . ',' . $svis_hour_line . ',' . $svis_total . ',' . $page_title; } $new_data .= $line . "\n"; } if(!$found) { $io_op = 'a'; $pv_hour = array_fill(0,24,0); $pvis_hour = array_fill(0,24,0); $svis_hour = array_fill(0,24,0); $pv_hour[$HOUR]++; $pvis_hour[$HOUR]++; if($svisit) { $svis_hour[$HOUR]++; } $pv_hour_line = implode(' ',$pv_hour); $pvis_hour_line = implode(' ',$pvis_hour); $svis_hour_line = implode(' ',$svis_hour); $new_data = $_GET['PID'] . ',' . $pv_hour_line . ',' . 1 . ',' . $pvis_hour_line . ',' . 1 . ',' . $svis_hour_line . ','; if($svisit) { $new_data .= 1 . ',' . $page_title . "\n"; } else { $new_data .= 0 . ',' . $page_title . "\n"; } } } else { $io_op = 'w'; $pv_hour = array_fill(0,24,0); $pvis_hour = array_fill(0,24,0); $svis_hour = array_fill(0,24,0); $pv_hour[$HOUR]++; $pvis_hour[$HOUR]++; if($svisit) { $svis_hour[$HOUR]++; } $pv_hour_line = implode(' ',$pv_hour); $pvis_hour_line = implode(' ',$pvis_hour); $svis_hour_line = implode(' ',$svis_hour); $new_data = $_GET['PID'] . ',' . $pv_hour_line . ',' . 1 . ',' . $pvis_hour_line . ',' . 1 . ',' . $svis_hour_line . ','; if($svisit) { $new_data .= 1 . ',' . $page_title . "\n"; } else { $new_data .= 0 . ',' . $page_title . "\n"; } } if($fp = fopen("$LOG_DIR/$hpv_log_file","$io_op")) { set_file_buffer($fp, 0); flock($fp, LOCK_EX); rewind($fp); fwrite($fp,$new_data); flock($fp, LOCK_UN); fclose($fp); } } // dpv // format: {0..31},pv_total,{0..31},svis_total if($dpv_init) { // 初期状態 // pv_hour vis_hour // pid,{0 0 0 ...0},pv_total,{0 0 0 ...0},vis_total\n $pv_day = array_fill(0,32,0); $svis_day = array_fill(0,32,0); $pv_day[$DAY]++; if($svisit) { $svis_day[$DAY]++; } $pv_day_line = implode(' ',$pv_day); $svis_day_line = implode(' ',$svis_day); $dpv_data = $pv_day_line . ',' . 1 . ',' . $svis_day_line . ','; if($svisit) { $dpv_data .= 1 . "\n"; } else { $dpv_data .= 0 . "\n"; } if($fp = fopen("$LOG_DIR/$dpv_log_file",'a')) { set_file_buffer($fp, 0); flock($fp, LOCK_EX); fwrite($fp,$dpv_data); flock($fp, LOCK_UN); fclose($fp); } } else { unset($new_data,$found); $new_data = ''; $found = false; if($file_array = file("$LOG_DIR/$dpv_log_file")) { $line = $file_array[0]; $line = rtrim($line); $line_array = explode(',',$line); $io_op = 'w'; $found = true; $pv_total = $line_array[1]; $pv_total++; $svis_total = $line_array[3]; $pv_day = explode(' ',$line_array[0]); $svis_day = explode(' ',$line_array[2]); if($svisit) { $svis_day[$DAY]++; $svis_total++; } $pv_day[$DAY]++; $pv_day_line = implode(' ',$pv_day); $svis_day_line = implode(' ',$svis_day); $line = $pv_day_line . ',' . $pv_total . ',' . $svis_day_line . ',' . $svis_total; $new_data .= $line . "\n"; } else { $io_op = 'w'; $pv_day = array_fill(0,32,0); $svis_day = array_fill(0,32,0); $pv_day[$DAY]++; $vis_day[$DAY]++; if($svisit) { $svis_day[$DAY]++; } $pv_day_line = implode(' ',$pv_day); $svis_day_line = implode(' ',$svis_day); $new_data = $pv_day_line . ',' . 1 . ',' . $svis_day_line . ','; if($svisit) { $new_data .= 1 . "\n"; } else { $new_data .= 0 . "\n"; } } if($fp = fopen("$LOG_DIR/$dpv_log_file","$io_op")) { set_file_buffer($fp, 0); flock($fp, LOCK_EX); rewind($fp); fwrite($fp,$new_data); flock($fp, LOCK_UN); fclose($fp); } } // mpv if($mpv_init) { // 初期状態 // pv_mon vis_mon // {1 ...12},pv_total,{1...12},vis_total\n $pv_mon = array_fill(0,13,0); $svis_mon = array_fill(0,13,0); $pv_mon[$MONTH] = 1; $vis_mon[$MONTH] = 1; if($svisit) { $svis_mon[$MONTH] = 1; } $pv_mon_line = implode(' ',$pv_mon); $svis_mon_line = implode(' ',$svis_mon); $mpv_data = $pv_mon_line . ',' . 1 . ',' . $svis_mon_line . ','; if($svisit) { $mpv_data .= 1 . "\n"; } else { $mpv_data .= 0 . "\n"; } if($fp = fopen("$LOG_DIR/$mpv_log_file",'w')) { set_file_buffer($fp, 0); flock($fp, LOCK_EX); fwrite($fp,$mpv_data); flock($fp, LOCK_UN); fclose($fp); } } else { unset($new_data,$found); $new_data = ''; $found = false; if($file_array = file("$LOG_DIR/$mpv_log_file")) { $line = $file_array[0]; $line = rtrim($line); $line_array = explode(',',$line); $io_op = 'w'; $pv_total = $line_array[1]; $pv_total++; $svis_total = $line_array[3]; $pv_mon = explode(' ',$line_array[0]); $svis_mon = explode(' ',$line_array[2]); if($svisit) { $svis_mon[$MONTH]++; $svis_total++; } $pv_mon[$MONTH]++; $pv_mon_line = implode(' ',$pv_mon); $svis_mon_line = implode(' ',$svis_mon); $line = $pv_mon_line . ',' . $pv_total . ',' . $svis_mon_line . ',' . $svis_total; $new_data .= $line . "\n"; } else { $io_op = 'w'; $pv_mon = array_fill(0,13,0); $svis_mon = array_fill(0,13,0); $pv_mon[$MONTH]++; $vis_mon[$MONTH]++; if($svisit) { $svis_mon[$MONTH]++; } $pv_mon_line = implode(' ',$pv_mon); $svis_mon_line = implode(' ',$svis_mon); $new_data = $pv_mon_line . ',' . 1 . ',' . $svis_mon_line . ','; if($svisit) { $new_data .= 1 . "\n"; } else { $new_data .= 0 . "\n"; } } if($fp = fopen("$LOG_DIR/$mpv_log_file","$io_op")) { set_file_buffer($fp, 0); flock($fp, LOCK_EX); rewind($fp); fwrite($fp,$new_data); flock($fp, LOCK_UN); fclose($fp); } } // se if($se_init and !empty($se_name)) { // 初期状態 // pv vis // se_name,{0 0 0 ...0},pv_total\n $pv = array_fill(0,13,0); $pv[$MONTH]++; $pv_line = implode(' ',$pv); $se_data = $se_name . ',' .$pv_line . ',1' . "\n"; if($fp = fopen("$LOG_DIR/$se_log_file",'a')) { set_file_buffer($fp, 0); flock($fp, LOCK_EX); fwrite($fp,$se_data); flock($fp, LOCK_UN); fclose($fp); } } elseif(!empty($se_name)) { $new_data = ''; $found = false; if($file_array = file("$LOG_DIR/$se_log_file")) { foreach($file_array as $line) { $line = rtrim($line); $line_array = explode(',',$line); if($line_array[0] === $se_name) { $found = true; $io_op = 'w'; $pv_total = $line_array[2]; $pv_total++; $pv = explode(' ',$line_array[1]); $pv[$MONTH]++; $pv_line = implode(' ',$pv); $line = $se_name . ',' .$pv_line . ',' .$pv_total; } $new_data .= $line . "\n"; } if(!$found) { $io_op = 'a'; $pv = array_fill(0,13,0); $pv[$MONTH]++; $pv_line = implode(' ',$pv); $new_data = $se_name . ',' .$pv_line . ',1'."\n"; } } else { $io_op = 'w'; $pv = array_fill(0,13,0); $pv[$MONTH]++; $pv_line = implode(' ',$pv); $new_data = $se_name . ',' . $pv_line . ',' . 1 . "\n"; } if($fp = fopen("$LOG_DIR/$se_log_file","$io_op")) { set_file_buffer($fp, 0); flock($fp, LOCK_EX); rewind($fp); fwrite($fp,$new_data); flock($fp, LOCK_UN); fclose($fp); } } // se if($dse_init and !empty($se_name)) { // 初期状態 // pv vis // se_name,{0 0 0 ...0},pv_total\n $pv = array_fill(0,32,0); $pv[$DAY]++; $pv_line = implode(' ',$pv); $se_data = $se_name . ',' .$pv_line . ',1' . "\n"; if($fp = fopen("$LOG_DIR/$dse_log_file",'a')) { set_file_buffer($fp, 0); flock($fp, LOCK_EX); fwrite($fp,$se_data); flock($fp, LOCK_UN); fclose($fp); } } elseif(!empty($se_name)) { $new_data = ''; $found = false; if($file_array = file("$LOG_DIR/$dse_log_file")) { foreach($file_array as $line) { $line = rtrim($line); $line_array = explode(',',$line); if($line_array[0] === $se_name) { $found = true; $io_op = 'w'; $pv_total = $line_array[2]; $pv_total++; $pv = explode(' ',$line_array[1]); $pv[$DAY]++; $pv_line = implode(' ',$pv); $line = $se_name . ',' .$pv_line . ',' .$pv_total; } $new_data .= $line . "\n"; } if(!$found) { $io_op = 'a'; $pv = array_fill(0,32,0); $pv[$DAY]++; $pv_line = implode(' ',$pv); $new_data = $se_name . ',' .$pv_line . ',1'."\n"; } } else { $io_op = 'w'; $pv = array_fill(0,32,0); $pv[$DAY]++; $pv_line = implode(' ',$pv); $new_data = $se_name . ',' . $pv_line . ',' . 1 . "\n"; } if($fp = fopen("$LOG_DIR/$dse_log_file","$io_op")) { set_file_buffer($fp, 0); flock($fp, LOCK_EX); rewind($fp); fwrite($fp,$new_data); flock($fp, LOCK_UN); fclose($fp); } } //~~~~~~~~~~~~~~~~~~~~ // 生ログ書き込み //____________________ if($fp = fopen($insert_log_file,'a')) { set_file_buffer($fp, 0); flock($fp, LOCK_EX); rewind($fp); fwrite($fp,$insert_data); flock($fp, LOCK_UN); fclose($fp); @chmod($insert_log_file,0666); } //~~~~~~~~~~~~~~~~~~ // 全体のロック解除 //__________________ rewind($LOCK); fputs($LOCK, $LBUF); flock($LOCK, LOCK_UN); fclose($LOCK); function uniDecode($str,$charcode) { $text = preg_replace_callback("/%u[0-9A-Za-z]{4}/",'toUtf8',$str); return mb_convert_encoding($text, $charcode, 'utf-8'); } function toUtf8($ar) { $c = ''; foreach($ar as $val){ $val = intval(substr($val,2),16); if($val < 0x7F){ // 0000-007F $c .= chr($val); }elseif($val < 0x800) { // 0080-0800 $c .= chr(0xC0 | ($val / 64)); $c .= chr(0x80 | ($val % 64)); }else{ // 0800-FFFF $c .= chr(0xE0 | (($val / 64) / 64)); $c .= chr(0x80 | (($val / 64) % 64)); $c .= chr(0x80 | ($val % 64)); } } return $c; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // 不要なクエリパラメタをURLから削除 //_________________________________________________ function strip_params_from_url($url = false,$strip_params = false) { if(!$strip_params) { return $url; } $valid_url = $url;// init if(!$parsed_item = @parse_url($url)) { return false; } if(!isset($parsed_item['path'])) { $parsed_item['path'] = ''; } $valid_qstr_array = array(); if(isset($parsed_item['query'])) { $query_array = explode('&',$parsed_item['query']); if($query_array) { foreach($query_array as $qstr) { $param = explode('=',$qstr); if(!isset($strip_params[$param[0]])) { array_push($valid_qstr_array,$qstr); } elseif(!$strip_params[$param[0]]) { array_push($valid_qstr_array,$qstr); } } $valid_qstr = '?' . implode('&',$valid_qstr_array); } else { $valid_qstr = $parsed_item['query']; } $valid_url = $parsed_item['scheme'] . '://' . $parsed_item['host'] . $parsed_item['path'] . $valid_qstr; } return $valid_url; } function printImg() { header ('Content-type: image/gif'); $img = 'img/spacer.gif'; $fp = fopen($img,'rb'); $bimg = fread($fp,filesize($img)); print $bimg; return; } exit; ?>