아파치님 js 빌더에서 활성도 통계 소스 수정할려고하니 어렵네요~~ 정보
아파치님 js 빌더에서 활성도 통계 소스 수정할려고하니 어렵네요~~
본문
아파치님 js 빌더에서 활성도 통계 소스 수정할려고하니 어렵네요~~
<?
$sub_menu = "200710";
include_once('./_common.php');
auth_check($auth[$sub_menu], "r");
// 출력 시작
$g4[title] = "사이트 활성도 통계";
include_once("$g4[admin_path]/admin.head.php");
if($site){
$site2=$site;
$site=$site;
}
if($site2){
$site=$site2;
}
if($day){
$day=$day;
}else{
$day=1; //기간 - 기본검색설정된 기간입니다. 필요에따라 수정해서 사용가능합니다.
}
if (empty($fr_date)) $fr_date = date("Y-m-d", $g4[server_time]-86400*$day);
if (empty($to_date)) $to_date = $g4[time_ymd];
// m3stats 설정
$limit=(strtotime($to_date)- strtotime($fr_date)) / 86400;
$bar_width = 60; // 그래프 최대 너비 (기본 60)
$pluginDracoCounter = $g4['path'] . '/plugin/DracoCounter/gDracoCounter.php';
include_once($pluginDracoCounter);
$pluginDracoData = ShowDracoCounter(30, 29); // 날짜, 날짜의 가로폭 : 총 가로폭은 날짜 * 날짜가로폭
?>
<style type="text/css">
#m3stats_tbl {border-collapse:collapse;}
#m3stats_tbl td {border:solid 1px #AAA;}
#m3stats_tbl_title {font-weight:700;text-align:center;}
.m3stats_align_c {text-align:center;}
</style>
<?=subtitle($g4[title])?>
<script type="text/javascript">
function fcount_submit(ymd, gr_id, bo_table)
{
var f = document.fcount;
f.ymd.value = ymd;
f.gr_id.value = gr_id;
f.bo_table.value = bo_table;
f.action = "<?=$PHP_SELF?>";
f.submit();
}
</script>
<table align="center" cellpadding="0" cellspacing="0" width="700">
<tr><td>
<?
// 전체 회원수
$sql = " select count(mb_id) as cnt from g4_member";
$row = sql_fetch($sql);
$total_member = $row[cnt];
// 남/여 성비
// 남자 성비
$sql = " select count(mb_sex) as sex from g4_member where `mb_sex` = 'M'";
$row = sql_fetch($sql);
$man_num = $row[sex];
// 여자 성비
$sql = " select count(mb_sex) as sex from g4_member where `mb_sex` = 'F'";
$row = sql_fetch($sql);
$woman_num = $row[sex];
// 남/여 성비 % 계산
$total_num = $man_num+$woman_num;
$man_per = @sprintf("%.2f",(($man_num / $total_num)*100));
$woman_per = @sprintf("%.2f",(($woman_num / $total_num)*100));
// 연령분포
$old1 = date("Ymd",strtotime("-9 year", time()));
$old2 = date("Ymd",strtotime("-19 year", time()));
$old3 = date("Ymd",strtotime("-29 year", time()));
$old4 = date("Ymd",strtotime("-39 year", time()));
$old5 = date("Ymd",strtotime("-49 year", time()));
// 0~9세
$sql = " select count(mb_birth) as old from g4_member where `mb_birth` > '$old1'";
$row = sql_fetch($sql);
$year0 = $row[old];
// 10~19세
$sql = " select count(mb_birth) as old from g4_member where `mb_birth` > '$old2' and `mb_birth` <= '$old1'";
$row = sql_fetch($sql);
$year1 = $row[old];
// 20~29세
$sql = " select count(mb_birth) as old from g4_member where `mb_birth` > '$old3' and `mb_birth` <= '$old2'";
$row = sql_fetch($sql);
$year2 = $row[old];
// 30~39세
$sql = " select count(mb_birth) as old from g4_member where `mb_birth` > '$old4' and `mb_birth` <= '$old3'";
$row = sql_fetch($sql);
$year3 = $row[old];
// 40~49세
$sql = " select count(mb_birth) as old from g4_member where `mb_birth` > '$old5' and `mb_birth` <= '$old4'";
$row = sql_fetch($sql);
$year4 = $row[old];
// 50세 이상
$sql = " select count(mb_birth) as old from g4_member where `mb_birth` <= '$old5'";
$row = sql_fetch($sql);
$year5 = $row[old];
// 연령분포 % 계산
$year0_per = @sprintf("%.2f",(($year0 / $total_num)*100));
$year1_per = @sprintf("%.2f",(($year1 / $total_num)*100));
$year2_per = @sprintf("%.2f",(($year2 / $total_num)*100));
$year3_per = @sprintf("%.2f",(($year3 / $total_num)*100));
$year4_per = @sprintf("%.2f",(($year4 / $total_num)*100));
$year5_per = @sprintf("%.2f",(($year5 / $total_num)*100));
/* 거주지 분포 */
// 서울거주
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%서울%'";
$row = sql_fetch($sql);
$seoul = $row[addr];
// 부산거주
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%부산%'";
$row = sql_fetch($sql);
$busan = $row[addr];
// 대구거주
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%대구%'";
$row = sql_fetch($sql);
$daegu = $row[addr];
// 인천거주
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%인천%'";
$row = sql_fetch($sql);
$incheon = $row[addr];
// 광주
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%광주%'";
$row = sql_fetch($sql);
$gwangju = $row[addr];
// 대전
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%대전%'";
$row = sql_fetch($sql);
$daejeon = $row[addr];
// 울산
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%울산%'";
$row = sql_fetch($sql);
$ulsan = $row[addr];
// 강원
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%강원%'";
$row = sql_fetch($sql);
$gangwon = $row[addr];
// 경기
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%경기%'";
$row = sql_fetch($sql);
$gyeonggi = $row[addr];
// 경남
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%경남%'";
$row = sql_fetch($sql);
$gyeongnam = $row[addr];
// 경북
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%경북%'";
$row = sql_fetch($sql);
$gyeongbuk = $row[addr];
// 전남
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%전남%'";
$row = sql_fetch($sql);
$jeonnam = $row[addr];
// 전북
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%전북%'";
$row = sql_fetch($sql);
$jeonbuk = $row[addr];
// 제주
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%제주%'";
$row = sql_fetch($sql);
$jeju = $row[addr];
// 충남
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%충남%'";
$row = sql_fetch($sql);
$chungnam = $row[addr];
// 충북
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%충북%'";
$row = sql_fetch($sql);
$chungbuk = $row[addr];
// 해외
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%해외%'";
$row = sql_fetch($sql);
$oversea = $row[addr];
// 지역분포 % 계산
$seoul_per = @sprintf("%.2f",(($seoul / $total_num)*100));
$busan_per = @sprintf("%.2f",(($busan / $total_num)*100));
$daegu_per = @sprintf("%.2f",(($daegu / $total_num)*100));
$incheon_per = @sprintf("%.2f",(($incheon / $total_num)*100));
$gwangju_per = @sprintf("%.2f",(($gwangju / $total_num)*100));
$daejeon_per = @sprintf("%.2f",(($daejeon / $total_num)*100));
$ulsan_per = @sprintf("%.2f",(($ulsan / $total_num)*100));
$gangwon_per = @sprintf("%.2f",(($gangwon / $total_num)*100));
$gyeonggi_per = @sprintf("%.2f",(($gyeonggi / $total_num)*100));
$gyeongnam_per = @sprintf("%.2f",(($gyeongnam / $total_num)*100));
$gyeongbuk_per = @sprintf("%.2f",(($gyeongbuk / $total_num)*100));
$jeonnam_per = @sprintf("%.2f",(($jeonnam / $total_num)*100));
$jeonbuk_per = @sprintf("%.2f",(($jeonbuk / $total_num)*100));
$jeju_per = @sprintf("%.2f",(($jeju / $total_num)*100));
$chungnam_per = @sprintf("%.2f",(($chungnam / $total_num)*100));
$chungbuk_per = @sprintf("%.2f",(($chungbuk / $total_num)*100));
$oversea_per = @sprintf("%.2f",(($oversea / $total_num)*100));
?>
</td>
</table>
<center><strong><최근 <?=$day?>일 기준 방문자 그래프></strong> <!--// Dracodata--> </center>
<form name=fcount method=get style="margin:0;">
<input type=hidden name="ymd">
<input type=hidden name="gr_id" value="<?=$gr_id?>">
<input type=hidden name="bo_table" value="<?=$bo_table?>">
<table width=100% cellpadding=3 cellspacing=1>
<tr>
<td> <?=$fr_date?> ~ <?=$to_date?> </td>
</tr>
</table>
</form>
<div align="center"><?=$pluginDracoData?></div> <br><br>
<table>
<tr>
<td rowspan=2><? include_once ($g4[admin_path] . '/status/today_status.php'); ?></td>
<td>
<table>
<tr>
<td> </td>
<td><? include_once ($g4[admin_path] . '/status/visit_status.php'); ?></td>
<td> </td>
<td><? include_once ($g4[admin_path] . '/status/member_status.php'); ?></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<?
$sql = " select count(*) as cnt from $g4[member_table] where mb_id <> '$config[cf_admin]' ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
$sql2 = "select count(*) as cnt from $g4[member_table] where mb_sex = 'F' and mb_id <> '$config[cf_admin]'";
$row2 = sql_fetch($sql2);
$count_f = $row2['cnt'];
$count_m=$total_count-$count_f;
$sql3 = " select count(*) as cnt from $g4[member_table] where mb_level between 3 and 11 ";
$row3 = sql_fetch($sql3);
$count_3 = $row3['cnt'];
$sql4 = " select count(*) as cnt from $g4[member_table] where mb_level = '2'";
$row4 = sql_fetch($sql4);
$count_2 = $row4['cnt'];
$sql5 = " select count(*) as cnt from $g4[member_table] where mb_level between 13 and 14 ";
$row5 = sql_fetch($sql5);
$count_s = $row5['cnt'];
$count_t = $count_3 + $count_s;
if ($member[mb_level]=="15") {echo " <font color='#666666'>- 등급별 회원수 ";
for( $i = 2 ; $i <= 14 ; $i++){
$sql = "select count(*) as mb_num from $g4[member_table] where mb_level = '$i'";
$result = sql_query($sql);
$row = mysql_fetch_array($result);
if($row[mb_num]!=0)
echo " 레벨[$i] : $row[mb_num] 명 </font> "; }
}
?> </td></tr>
<tr height=10><td colspan=2></td></tr>
</table>
<table align="center" cellpadding="0" cellspacing="0" width="850" border=0>
<tr>
<td width="100%" valign="top" colspan="3">
<img src=./img/bul2.gif border=0 align=absmiddle> <b>총 회원 수 : <?=number_format($total_member)?> 명</b> (오늘가입: <?=$member_cnt[0]?> 명 , 이달가입 <?=number_format($member_cnt[month])?> 명)<br><br></td>
</tr>
<tr>
<td width="200" valign="top">
<img src=./img/bul2.gif border=0 align=absmiddle> <b>연령별 분포</b><br>
- 만 0 ~ 9세 : <?=number_format($year0);?> 명 (<?=$year0_per?>%)<br>
- 만 10 ~ 19세 : <?=number_format($year1);?> 명 (<?=$year1_per?>%)<br>
- 만 20 ~ 29세 : <?=number_format($year2);?> 명 (<?=$year2_per?>%)<br>
- 만 30 ~ 39세 : <?=number_format($year3);?> 명 (<?=$year3_per?>%)<br>
- 만 40 ~ 49세 : <?=number_format($year4);?> 명 (<?=$year4_per?>%)<br>
- 만 50세 이상 : <?=number_format($year5);?> 명 (<?=$year5_per?>%)<br><br>
</td>
<td width="180" valign="top">
<img src=./img/bul2.gif border=0 align=absmiddle> <b>남/여성별 분포</b><br>
- 남자 : <?=number_format($man_num);?> 명 (<?=$man_per?>%)<br>
- 여자 : <?=number_format($woman_num);?> 명 (<?=$woman_per?>%)<br><br>
</td>
<td width="" valign="top">
<img src=./img/bul2.gif border=0 align=absmiddle> <b>지역별 분포</b><br>
<table align="center" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td>
- 서울 : <?=number_format($seoul);?> 명 (<?=$seoul_per?>%)<br>
- 경기 : <?=number_format($gyeonggi);?> 명 (<?=$gyeonggi_per?>%)<br>
- 인천 : <?=number_format($incheon);?> 명 (<?=$incheon_per?>%)<br>
- 강원 : <?=number_format($gangwon);?> 명 (<?=$gangwon_per?>%)<br>
- 충북 : <?=number_format($chungbuk);?> 명 (<?=$chungbuk_per?>%)<br>
- 충남 : <?=number_format($chungnam);?> 명 (<?=$chungnam_per?>%)<br>
</td>
<td>
- 대전 : <?=number_format($daejeon);?> 명 (<?=$daejeon_per?>%)<br>
- 경북 : <?=number_format($gyeongbuk);?> 명 (<?=$gyeongbuk_per?>%)<br>
- 경남 : <?=number_format($gyeongnam);?> 명 (<?=$gyeongnam_per?>%)<br>
- 대구 : <?=number_format($daegu);?> 명 (<?=$daegu_per?>%)<br>
- 울산 : <?=number_format($ulsan);?> 명 (<?=$ulsan_per?>%)<br>
- 부산 : <?=number_format($busan);?> 명 (<?=$busan_per?>%)<br>
</td>
<td>
- 전북 : <?=number_format($jeonbuk);?> 명 (<?=$jeonbuk_per?>%)<br>
- 전남 : <?=number_format($jeonnam);?> 명 (<?=$jeonnam_per?>%)<br>
- 광주 : <?=number_format($gwangju);?> 명 (<?=$gwangju_per?>%)<br>
- 제주 : <?=number_format($jeju);?> 명 (<?=$jeju_per?>%)<br>
- 해외 : <?=number_format($oversea);?> 명 (<?=$oversea_per?>%)<br>
</td>
</tr>
</table>
</td>
</tr>
</table>
<table width=100% id="m3stats_tbl">
<tr id="m3stats_tbl_title">
<td>날짜</td>
<td colspan="2">전체방문</td>
<td colspan="2">직접방문</td>
<td colspan="2">가입</td>
<?if($config[cf_login_point]) {?>
<td colspan="2">로그인</td><?}?>
<td colspan="2">원글/댓글</td>
</tr>
<?
$day .= " (".get_yoil($print_date[i]).")";
for($i=0; $i<$limit; $i++) {
$date = date("Y-m-d", time()-$i*24*60*60);
$print_date[$i] = substr($date,2);
$date_1 = date("Y-m-d", time()-($i-1)*24*60*60);
// 방문자 수
$temp = sql_fetch("select vs_count from `g4_visit_sum` where vs_date='$date'");
$count_visit[$i] = intval($temp[vs_count]);
if($max_count_visit<$count_visit[$i]) $max_count_visit = $count_visit[$i];
// 직접 방문자 수 (referer가 없는 경우)
$temp = sql_fetch("select count(*) as total from `g4_visit` where vi_date='$date' AND vi_referer=''");
$count_direct[$i] = $temp[total];
if($max_count_direct<$count_direct[$i]) { $max_count_direct = $count_direct[$i];
if($max_count_direct>$config[cf_3]){
mysql_query(" update g4_config set cf_3='$max_count_direct' ");
}
}
// 가입자 수 (mb_datetime으로 확인)
$temp = sql_fetch("select count(*) as total from `g4_member` where mb_datetime LIKE '$date%'");
$count_join[$i] = $temp[total];
if($max_count_join<$count_join[$i]) $max_count_join = $count_join[$i];
// 로그인 수 (로그인 포인트가 없으면 계산 안되므로 안 띄운다)
if($config[cf_login_point]) {
$temp = sql_fetch("select count(*) as total from `g4_point` where po_rel_table='@login' AND po_datetime LIKE '$date%'");
$count_login[$i] = $temp[total];
if($max_count_login<$count_login[$i]) $max_count_login = $count_login[$i];
if($max_count_login>$config[cf_2]){
mysql_query(" update g4_config set cf_2='$max_count_login' ");
}
}
// 원글 수
$temp = sql_fetch("select count(*) as total from `g4_board_new` where wr_id=wr_parent AND bn_datetime LIKE '$date%'");
$count_article[$i] = $temp[total];
if($max_count_article<$count_article[$i]) $max_count_article = $count_article[$i];
// 댓글 수
$temp = sql_fetch("select count(*) as total from `g4_board_new` where wr_id!=wr_parent AND bn_datetime LIKE '$date%'");
$count_comment[$i] = $temp[total];
if($max_count_comment<$count_comment[$i]) $max_count_comment = $count_comment[$i];
}
for($i=0; $i<$limit; $i++) {
?>
<tr>
<td width=80><?=$print_date[$i]?> (<?=get_yoil($print_date[$i])?>)</td>
<td class="m3stats_align_c"><?=$count_visit[$i]?></td>
<td><img src="<?=$g4[path]?>/partner/img/graph.gif" height="9" width="<?=ceil($count_visit[$i]/$max_count_visit*$bar_width)?>" /></td>
<td class="m3stats_align_c"><?=$count_direct[$i]?></td>
<td><img src="<?=$g4[path]?>/partner/img/graph.gif" height="9" width="<?=ceil($count_direct[$i]/$max_count_direct*$bar_width)?>" /></td>
<td class="m3stats_align_c"><?=$count_join[$i]?></td>
<td><img src="<?=$g4[path]?>/partner/img/graph.gif" height="9" width="<?=ceil($count_join[$i]/$max_count_join*$bar_width)?>" /></td>
<?if($config[cf_login_point]) {?>
<td class="m3stats_align_c"><?=$count_login[$i]?></td>
<td><img src="<?=$g4[path]?>/partner/img/graph.gif" height="9" width="<?=ceil($count_login[$i]/$max_count_login*$bar_width)?>" /></td>
<?}?>
<td class="m3stats_align_c"><?=$count_article[$i]?>/<?=$count_comment[$i]?></td>
<td><img src="<?=$g4[path]?>/partner/img/graph.gif" height="9" width="<?=ceil($count_article[$i]/$max_count_article*$bar_width)?>" /></td>
</tr>
<?}?>
</table>
<?
// 날짜 설정
if(!$fr_date) $fr_date = date("Y-m-d", strtotime("0 days ago"));
if(!$to_date) $to_date = $g4[time_ymd];
// 주사 방지
$fr_date = substr($fr_date, 0, 10);
$to_date = substr($to_date, 0, 10);
$site = substr($site, 0, 10);
$site_ori = $site;
// 검색사이트들
$site_arr = array("Google", "Nate", "Yahoo", "Daum", "Naver", "Bing");
$surl_arr = array("Google" => "http://www.google.%", "Nate" => "%nate.com%", "Yahoo" => "%search.yahoo.com%", "Daum" => "%search.daum.net%", "Naver" => "%search.naver.com%", "Bing" => "http://www.bing.com%");
$svar_arr = array("Google" => "q", "Nate" => "q", "Yahoo" => "p", "Daum" => "q", "Naver" => "query", "Bing" => "q");
?>
<style type="text/css">
#m3tbl { border:solid 1px #CCC; border-collapse:collapse;}
#m3tbl th { border:solid 1px #CCC; text-align:center;}
#m3tbl td { border:solid 1px #CCC; text-align:center; padding:2px 8px;}
#div_m3sq ul { display:inline; padding:0; margin:0; }
#div_m3sq ul li { display:inline; padding:0 10px; border:solid 1px #CCC; }
</style>
<div id="div_m3sq">
<br /><br />
<img src=./img/bul2.gif border=0 align=absmiddle> <b>외부 유입 검색어(키워드) 분석기</b><br /><br />
<ul>
<li><a href="<?=$PHP_SELF?>?to_date=<?=$to_date?>&fr_date=<?=$fr_date?>">All</a></li>
<? foreach($site_arr as $site) { ?>
<li><a href="<?=$PHP_SELF?>?site=<?=$site?>&to_date=<?=$to_date?>&fr_date=<?=$fr_date?>"><?=$site?></a></li>
<? } ?>
</ul>
<br />
<br />
<form method="get" action="<?=$_SERVER[PHP_SELF]?>">
<input type="hidden" name="site" value="<?=$site_ori?>" />
시작 : <input type="text" name="fr_date" value="<?=$fr_date?>" size="10" />
끝 : <input type="text" name="to_date" value="<?=$to_date?>" size="10" />
<input type="submit" value="go" /> | <a href="<?=$PHP_SELF?>?site=<?=$site2?>&to_date=<?=$to_date?>&fr_date=<?=$to_date?>">오늘</a> |
<a href="<?=$PHP_SELF?>?site=<?=$site2?>&to_date=<?=$to_date?>&fr_date=<?=$fr_date?>">어제</a> |
<a href="<?=$PHP_SELF?>?site=<?=$site2?>&to_date=<?=$to_date?>&day=7">지난1주일</a> |
<a href="<?=$PHP_SELF?>?site=<?=$site2?>&to_date=<?=$to_date?>&day=30">지난1달</a><br />
</form><br />
<form name=fsearch method=get />
결과내 검색 : <input type="text" id="sq" name="sq" value="<? echo $_GET[sq] ?>" />
<input type="submit" value="search" />
<input type="button" value="reset" onclick="resetsq()" />
<span id="search_cnt"></span><br />
</form>
<br />
<?
// vi_referer에서 사이트 찾고, vi_date로 범위 정하기, 정렬은 vi_id 역순 (속도 개선 필요)
if(in_array($site_ori, $site_arr)) {
$where1 = "vi_referer LIKE '{$surl_arr[$site_ori]}' ";
}
else { // 5개 사이트 모두 포함
$where1 = " ( ";
foreach($surl_arr as $site => $surl) {
$where1 .= " vi_referer LIKE '$surl' OR ";
}
$where1 .= " 0 )";
}
$sql = " select count(distinct vi_id) as cnt from `$g4[visit_table]` where $where1 AND vi_date>='$fr_date' AND vi_date<='$to_date' order by vi_id desc";
$row = sql_fetch($sql);
echo "<br>전체 :";
echo $total_count = number_format($row[cnt],0)."건";
$rows = $config[cf_page_rows];
$total_page = ceil($total_count / $rows); // 전체 페이지 계산
if ($page == "") { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함
$query = sql_query("select * from `$g4[visit_table]` where $where1 AND vi_date>='$fr_date' AND vi_date<='$to_date' order by vi_id desc limit $from_record, $rows");
$qstr1 = "sel_field=$sel_field&search=$search&save_search=$search";
$qstr = "$qstr1&sort1=$sort1&site2=$site2&sort2=$sort2&page=$page";
$cnt = 1;
$cnt2 = array();
//echo $num = mysql_num_rows($query);
while($row = sql_fetch_array($query)) {
// 어느 사이트인지 찾기
foreach($surl_arr as $site => $surl) {
if(strstr($row[vi_referer], str_replace("%", "", $surl))) {
$engine = $site;
break;
}
}
// 검색문자열 찾기
$regex = "/(\?|&){$svar_arr[$engine]}\=([^&]*)/i";
preg_match($regex, $row[vi_referer], $matches);
$querystr = $matches[2];
// 보통 검색어 사이를 +로 넘긴다
$querystr = str_replace("+", " ", $querystr);
// %ab 이런 식으로 된 걸 바꿔주기
$querystr = urldecode($querystr);
// 네이버는 unicode로 된 경우도 있어서
if($engine=="Naver") $querystr = utf8_urldecode($querystr);
// 캐릭터셋이 UTF-8인 경우는 EUC-KR로 고치기 (UTF-8 유저는 EUC-KR과 UTF-8을 서로 바꿔주면 될 듯)
$charset = mb_detect_encoding($querystr, "ASCII, EUC-KR, UTF-8");
if($charset=="EUC-KR") $querystr = iconv("EUC-KR", "UTF-8", $querystr);
// 자잘한 처리들
$querystr = trim($querystr);
$querystr = htmlspecialchars($querystr);
// 가끔 빈 것들도 있다 -_-
// if(!strlen($querystr)) continue;
// 에코
// 카운트용 변수
$cnt++;
$cnt2[$engine]++;
} ?>
Total : <?=$days=(strtotime($to_date)-strtotime($fr_date))/(24*60*60)+1?> days, <?=$cnt-1?> results (<?=sprintf("%.1f",$cnt/$days)?>/day)<br />
<? if(!$site_ori) { // 모든 사이트의 경우 비율 분석
foreach($cnt2 as $engine => $count) {
echo "$engine : $count (".sprintf("%.1f",$count/$cnt*100)."%) ";
}
}?>
<?
// vi_referer에서 사이트 찾고, vi_date로 범위 정하기, 정렬은 vi_id 역순 (속도 개선 필요)
if(in_array($site_ori, $site_arr)) {
$where1 = "vi_referer LIKE '{$surl_arr[$site_ori]}' ";
}
else { // 5개 사이트 모두 포함
$where1 = " ( ";
foreach($surl_arr as $site => $surl) {
$where1 .= " vi_referer LIKE '$surl' OR ";
}
$where1 .= " 0 )";
}
$sql = " select count(distinct vi_id) as cnt from `$g4[visit_table]` where $where1 AND vi_date>='$fr_date' AND vi_date<='$to_date' order by vi_id desc";
$row = sql_fetch($sql);
//echo "전체 :";
$total_count = $row[cnt];
$rows = $config[cf_page_rows];
$total_page = ceil($total_count / $rows); // 전체 페이지 계산
if ($page == "") { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함
$query = sql_query("select * from `$g4[visit_table]` where $where1 AND vi_date>='$fr_date' AND vi_date<='$to_date' order by vi_id desc limit $from_record, $rows");
$qstr1 = "sel_field=$sel_field&search=$search&save_search=$search";
$qstr = "$qstr1&sort1=$sort1&site2=$site2&sort2=$sort2&page=$page";
?>
<table id="m3tbl" border="0" width="100%">
<tr>
<th width="30">번호</td>
<th width="50">날짜</td>
<th width="50">시간</td>
<th>사이트</td>
<th width="60">모바일</td>
<th width="150">검색어</td>
<td></td>
<th width="30">번호</td>
<th width="50">날짜</td>
<th width="50">시간</td>
<th>사이트</td>
<th width="60">모바일</td>
<th width="150">검색어</td>
</tr>
<tr>
<?
$cnt = 1;
$cnt2 = array();
while($row = sql_fetch_array($query)) {
// 어느 사이트인지 찾기
foreach($surl_arr as $site => $surl) {
if(strstr($row[vi_referer], str_replace("%", "", $surl))) {
$engine = $site;
break;
}
}
// 검색문자열 찾기
$regex = "/(\?|&){$svar_arr[$engine]}\=([^&]*)/i";
preg_match($regex, $row[vi_referer], $matches);
$querystr = $matches[2];
// 보통 검색어 사이를 +로 넘긴다
$querystr = str_replace("+", " ", $querystr);
// %ab 이런 식으로 된 걸 바꿔주기
$querystr = urldecode($querystr);
// 네이버는 unicode로 된 경우도 있어서
if($engine=="Naver") $querystr = utf8_urldecode($querystr);
// 캐릭터셋이 UTF-8인 경우는 EUC-KR로 고치기 (UTF-8 유저는 EUC-KR과 UTF-8을 서로 바꿔주면 될 듯)
$charset = mb_detect_encoding($querystr, "ASCII, EUC-KR, UTF-8");
if($charset=="EUC-KR") $querystr = iconv("EUC-KR", "UTF-8", $querystr);
// 자잘한 처리들
$querystr = trim($querystr);
$querystr = htmlspecialchars($querystr);
// 가끔 빈 것들도 있다 -_-
// if(!strlen($querystr)) continue;
//echo $row[vi_referer];
// if(preg_match("/mobile/",$row[vi_referer])){
// $mode="모바일";
// }
// 에코
echo "<td>$cnt</td>";
echo "<td>".date("m-d",strtotime($row[vi_date]))."</td>";
echo "<td>$row[vi_time]</td>";
echo "<td><a href=\"$PHP_SELF?site=$engine\"><img src=\"$g4[admin_path]/img/".strtolower($engine).".jpg\" /></a></td>";
echo "<td>".$mode = strpos($row[vi_referer],"http://m.")."</td>";
if($querystr) echo "<td style=\"text-align:left\" id=\"m3sqtd[$cnt]\"><a href=\"$row[vi_referer]\" target=\"_blank\">$querystr</a></td>";
else echo "<td style=\"text-align:left\" id=\"m3sqtd[$cnt]\">Robot</td>";
echo "<td></td>";
if($cnt%2 == 0){
echo "</tr><tr>";
}
// 카운트용 변수
$cnt++;
$cnt2[$engine]++;
}
echo "</tr>";
ksort($cnt2);
// 베짱이님 제공 함수
function utf8_urldecode($str, $chr_set='CP949') {
$callback_function = create_function('$matches, $chr_set="'.$chr_set.'"', 'return iconv("UTF-16BE", $chr_set, pack("n*", hexdec($matches[1])));');
return rawurldecode(preg_replace_callback('/%u([[:alnum:]]{4})/', $callback_function, $str));
}
?>
</table><br />
<table width=100%>
<tr>
<td width=50%> </td>
<td width=50% align=right><?=get_paging($config[cf_write_pages], $page, $total_page, "$_SERVER[PHP_SELF]?$qstr&page=");?></td>
</tr>
</table>
</div>
<script type="text/javascript">
function findsq(sq) {
if(sq=="") return;
var i = 1;
var search_cnt = 0; // 결과내 검색 개수
while(a = document.getElementById("m3sqtd["+i+"]")) {
if(a.innerText.toLowerCase().match(sq.toLowerCase())) { // 찾는 값이 있으면 보이기
a.parentNode.style.display="";
search_cnt++;
} else { // 찾는 값이 없으면 숨기기
a.parentNode.style.display="none";
}
i++;
}
document.getElementById("search_cnt").innerText = "결과내 검색 : " + search_cnt + "건";
}
function resetsq() {
var i = 0;
while(a = document.getElementById("m3sqtd["+i+"]")) {
a.parentNode.style.display=""; // 모든 행의 display 속성 reset
i++;
}
document.getElementById("search_cnt").innerText = "";
document.getElementById("sq").value = "";
}
</script>
<?
//마지막 인클루드
include_once("$g4[admin_path]/admin.tail.php");
?>
>>현재 검색어를 검색시 쿼리를 조회되어야하는데요~ get으로 변경해서 할려고하는데
잘안되네요 고수님들 도와주실분~~
<?
$sub_menu = "200710";
include_once('./_common.php');
auth_check($auth[$sub_menu], "r");
// 출력 시작
$g4[title] = "사이트 활성도 통계";
include_once("$g4[admin_path]/admin.head.php");
if($site){
$site2=$site;
$site=$site;
}
if($site2){
$site=$site2;
}
if($day){
$day=$day;
}else{
$day=1; //기간 - 기본검색설정된 기간입니다. 필요에따라 수정해서 사용가능합니다.
}
if (empty($fr_date)) $fr_date = date("Y-m-d", $g4[server_time]-86400*$day);
if (empty($to_date)) $to_date = $g4[time_ymd];
// m3stats 설정
$limit=(strtotime($to_date)- strtotime($fr_date)) / 86400;
$bar_width = 60; // 그래프 최대 너비 (기본 60)
$pluginDracoCounter = $g4['path'] . '/plugin/DracoCounter/gDracoCounter.php';
include_once($pluginDracoCounter);
$pluginDracoData = ShowDracoCounter(30, 29); // 날짜, 날짜의 가로폭 : 총 가로폭은 날짜 * 날짜가로폭
?>
<style type="text/css">
#m3stats_tbl {border-collapse:collapse;}
#m3stats_tbl td {border:solid 1px #AAA;}
#m3stats_tbl_title {font-weight:700;text-align:center;}
.m3stats_align_c {text-align:center;}
</style>
<?=subtitle($g4[title])?>
<script type="text/javascript">
function fcount_submit(ymd, gr_id, bo_table)
{
var f = document.fcount;
f.ymd.value = ymd;
f.gr_id.value = gr_id;
f.bo_table.value = bo_table;
f.action = "<?=$PHP_SELF?>";
f.submit();
}
</script>
<table align="center" cellpadding="0" cellspacing="0" width="700">
<tr><td>
<?
// 전체 회원수
$sql = " select count(mb_id) as cnt from g4_member";
$row = sql_fetch($sql);
$total_member = $row[cnt];
// 남/여 성비
// 남자 성비
$sql = " select count(mb_sex) as sex from g4_member where `mb_sex` = 'M'";
$row = sql_fetch($sql);
$man_num = $row[sex];
// 여자 성비
$sql = " select count(mb_sex) as sex from g4_member where `mb_sex` = 'F'";
$row = sql_fetch($sql);
$woman_num = $row[sex];
// 남/여 성비 % 계산
$total_num = $man_num+$woman_num;
$man_per = @sprintf("%.2f",(($man_num / $total_num)*100));
$woman_per = @sprintf("%.2f",(($woman_num / $total_num)*100));
// 연령분포
$old1 = date("Ymd",strtotime("-9 year", time()));
$old2 = date("Ymd",strtotime("-19 year", time()));
$old3 = date("Ymd",strtotime("-29 year", time()));
$old4 = date("Ymd",strtotime("-39 year", time()));
$old5 = date("Ymd",strtotime("-49 year", time()));
// 0~9세
$sql = " select count(mb_birth) as old from g4_member where `mb_birth` > '$old1'";
$row = sql_fetch($sql);
$year0 = $row[old];
// 10~19세
$sql = " select count(mb_birth) as old from g4_member where `mb_birth` > '$old2' and `mb_birth` <= '$old1'";
$row = sql_fetch($sql);
$year1 = $row[old];
// 20~29세
$sql = " select count(mb_birth) as old from g4_member where `mb_birth` > '$old3' and `mb_birth` <= '$old2'";
$row = sql_fetch($sql);
$year2 = $row[old];
// 30~39세
$sql = " select count(mb_birth) as old from g4_member where `mb_birth` > '$old4' and `mb_birth` <= '$old3'";
$row = sql_fetch($sql);
$year3 = $row[old];
// 40~49세
$sql = " select count(mb_birth) as old from g4_member where `mb_birth` > '$old5' and `mb_birth` <= '$old4'";
$row = sql_fetch($sql);
$year4 = $row[old];
// 50세 이상
$sql = " select count(mb_birth) as old from g4_member where `mb_birth` <= '$old5'";
$row = sql_fetch($sql);
$year5 = $row[old];
// 연령분포 % 계산
$year0_per = @sprintf("%.2f",(($year0 / $total_num)*100));
$year1_per = @sprintf("%.2f",(($year1 / $total_num)*100));
$year2_per = @sprintf("%.2f",(($year2 / $total_num)*100));
$year3_per = @sprintf("%.2f",(($year3 / $total_num)*100));
$year4_per = @sprintf("%.2f",(($year4 / $total_num)*100));
$year5_per = @sprintf("%.2f",(($year5 / $total_num)*100));
/* 거주지 분포 */
// 서울거주
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%서울%'";
$row = sql_fetch($sql);
$seoul = $row[addr];
// 부산거주
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%부산%'";
$row = sql_fetch($sql);
$busan = $row[addr];
// 대구거주
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%대구%'";
$row = sql_fetch($sql);
$daegu = $row[addr];
// 인천거주
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%인천%'";
$row = sql_fetch($sql);
$incheon = $row[addr];
// 광주
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%광주%'";
$row = sql_fetch($sql);
$gwangju = $row[addr];
// 대전
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%대전%'";
$row = sql_fetch($sql);
$daejeon = $row[addr];
// 울산
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%울산%'";
$row = sql_fetch($sql);
$ulsan = $row[addr];
// 강원
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%강원%'";
$row = sql_fetch($sql);
$gangwon = $row[addr];
// 경기
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%경기%'";
$row = sql_fetch($sql);
$gyeonggi = $row[addr];
// 경남
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%경남%'";
$row = sql_fetch($sql);
$gyeongnam = $row[addr];
// 경북
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%경북%'";
$row = sql_fetch($sql);
$gyeongbuk = $row[addr];
// 전남
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%전남%'";
$row = sql_fetch($sql);
$jeonnam = $row[addr];
// 전북
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%전북%'";
$row = sql_fetch($sql);
$jeonbuk = $row[addr];
// 제주
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%제주%'";
$row = sql_fetch($sql);
$jeju = $row[addr];
// 충남
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%충남%'";
$row = sql_fetch($sql);
$chungnam = $row[addr];
// 충북
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%충북%'";
$row = sql_fetch($sql);
$chungbuk = $row[addr];
// 해외
$sql = " select count(mb_addr1) as addr from g4_member where `mb_addr1` LIKE '%해외%'";
$row = sql_fetch($sql);
$oversea = $row[addr];
// 지역분포 % 계산
$seoul_per = @sprintf("%.2f",(($seoul / $total_num)*100));
$busan_per = @sprintf("%.2f",(($busan / $total_num)*100));
$daegu_per = @sprintf("%.2f",(($daegu / $total_num)*100));
$incheon_per = @sprintf("%.2f",(($incheon / $total_num)*100));
$gwangju_per = @sprintf("%.2f",(($gwangju / $total_num)*100));
$daejeon_per = @sprintf("%.2f",(($daejeon / $total_num)*100));
$ulsan_per = @sprintf("%.2f",(($ulsan / $total_num)*100));
$gangwon_per = @sprintf("%.2f",(($gangwon / $total_num)*100));
$gyeonggi_per = @sprintf("%.2f",(($gyeonggi / $total_num)*100));
$gyeongnam_per = @sprintf("%.2f",(($gyeongnam / $total_num)*100));
$gyeongbuk_per = @sprintf("%.2f",(($gyeongbuk / $total_num)*100));
$jeonnam_per = @sprintf("%.2f",(($jeonnam / $total_num)*100));
$jeonbuk_per = @sprintf("%.2f",(($jeonbuk / $total_num)*100));
$jeju_per = @sprintf("%.2f",(($jeju / $total_num)*100));
$chungnam_per = @sprintf("%.2f",(($chungnam / $total_num)*100));
$chungbuk_per = @sprintf("%.2f",(($chungbuk / $total_num)*100));
$oversea_per = @sprintf("%.2f",(($oversea / $total_num)*100));
?>
</td>
</table>
<center><strong><최근 <?=$day?>일 기준 방문자 그래프></strong> <!--// Dracodata--> </center>
<form name=fcount method=get style="margin:0;">
<input type=hidden name="ymd">
<input type=hidden name="gr_id" value="<?=$gr_id?>">
<input type=hidden name="bo_table" value="<?=$bo_table?>">
<table width=100% cellpadding=3 cellspacing=1>
<tr>
<td> <?=$fr_date?> ~ <?=$to_date?> </td>
</tr>
</table>
</form>
<div align="center"><?=$pluginDracoData?></div> <br><br>
<table>
<tr>
<td rowspan=2><? include_once ($g4[admin_path] . '/status/today_status.php'); ?></td>
<td>
<table>
<tr>
<td> </td>
<td><? include_once ($g4[admin_path] . '/status/visit_status.php'); ?></td>
<td> </td>
<td><? include_once ($g4[admin_path] . '/status/member_status.php'); ?></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<?
$sql = " select count(*) as cnt from $g4[member_table] where mb_id <> '$config[cf_admin]' ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
$sql2 = "select count(*) as cnt from $g4[member_table] where mb_sex = 'F' and mb_id <> '$config[cf_admin]'";
$row2 = sql_fetch($sql2);
$count_f = $row2['cnt'];
$count_m=$total_count-$count_f;
$sql3 = " select count(*) as cnt from $g4[member_table] where mb_level between 3 and 11 ";
$row3 = sql_fetch($sql3);
$count_3 = $row3['cnt'];
$sql4 = " select count(*) as cnt from $g4[member_table] where mb_level = '2'";
$row4 = sql_fetch($sql4);
$count_2 = $row4['cnt'];
$sql5 = " select count(*) as cnt from $g4[member_table] where mb_level between 13 and 14 ";
$row5 = sql_fetch($sql5);
$count_s = $row5['cnt'];
$count_t = $count_3 + $count_s;
if ($member[mb_level]=="15") {echo " <font color='#666666'>- 등급별 회원수 ";
for( $i = 2 ; $i <= 14 ; $i++){
$sql = "select count(*) as mb_num from $g4[member_table] where mb_level = '$i'";
$result = sql_query($sql);
$row = mysql_fetch_array($result);
if($row[mb_num]!=0)
echo " 레벨[$i] : $row[mb_num] 명 </font> "; }
}
?> </td></tr>
<tr height=10><td colspan=2></td></tr>
</table>
<table align="center" cellpadding="0" cellspacing="0" width="850" border=0>
<tr>
<td width="100%" valign="top" colspan="3">
<img src=./img/bul2.gif border=0 align=absmiddle> <b>총 회원 수 : <?=number_format($total_member)?> 명</b> (오늘가입: <?=$member_cnt[0]?> 명 , 이달가입 <?=number_format($member_cnt[month])?> 명)<br><br></td>
</tr>
<tr>
<td width="200" valign="top">
<img src=./img/bul2.gif border=0 align=absmiddle> <b>연령별 분포</b><br>
- 만 0 ~ 9세 : <?=number_format($year0);?> 명 (<?=$year0_per?>%)<br>
- 만 10 ~ 19세 : <?=number_format($year1);?> 명 (<?=$year1_per?>%)<br>
- 만 20 ~ 29세 : <?=number_format($year2);?> 명 (<?=$year2_per?>%)<br>
- 만 30 ~ 39세 : <?=number_format($year3);?> 명 (<?=$year3_per?>%)<br>
- 만 40 ~ 49세 : <?=number_format($year4);?> 명 (<?=$year4_per?>%)<br>
- 만 50세 이상 : <?=number_format($year5);?> 명 (<?=$year5_per?>%)<br><br>
</td>
<td width="180" valign="top">
<img src=./img/bul2.gif border=0 align=absmiddle> <b>남/여성별 분포</b><br>
- 남자 : <?=number_format($man_num);?> 명 (<?=$man_per?>%)<br>
- 여자 : <?=number_format($woman_num);?> 명 (<?=$woman_per?>%)<br><br>
</td>
<td width="" valign="top">
<img src=./img/bul2.gif border=0 align=absmiddle> <b>지역별 분포</b><br>
<table align="center" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td>
- 서울 : <?=number_format($seoul);?> 명 (<?=$seoul_per?>%)<br>
- 경기 : <?=number_format($gyeonggi);?> 명 (<?=$gyeonggi_per?>%)<br>
- 인천 : <?=number_format($incheon);?> 명 (<?=$incheon_per?>%)<br>
- 강원 : <?=number_format($gangwon);?> 명 (<?=$gangwon_per?>%)<br>
- 충북 : <?=number_format($chungbuk);?> 명 (<?=$chungbuk_per?>%)<br>
- 충남 : <?=number_format($chungnam);?> 명 (<?=$chungnam_per?>%)<br>
</td>
<td>
- 대전 : <?=number_format($daejeon);?> 명 (<?=$daejeon_per?>%)<br>
- 경북 : <?=number_format($gyeongbuk);?> 명 (<?=$gyeongbuk_per?>%)<br>
- 경남 : <?=number_format($gyeongnam);?> 명 (<?=$gyeongnam_per?>%)<br>
- 대구 : <?=number_format($daegu);?> 명 (<?=$daegu_per?>%)<br>
- 울산 : <?=number_format($ulsan);?> 명 (<?=$ulsan_per?>%)<br>
- 부산 : <?=number_format($busan);?> 명 (<?=$busan_per?>%)<br>
</td>
<td>
- 전북 : <?=number_format($jeonbuk);?> 명 (<?=$jeonbuk_per?>%)<br>
- 전남 : <?=number_format($jeonnam);?> 명 (<?=$jeonnam_per?>%)<br>
- 광주 : <?=number_format($gwangju);?> 명 (<?=$gwangju_per?>%)<br>
- 제주 : <?=number_format($jeju);?> 명 (<?=$jeju_per?>%)<br>
- 해외 : <?=number_format($oversea);?> 명 (<?=$oversea_per?>%)<br>
</td>
</tr>
</table>
</td>
</tr>
</table>
<table width=100% id="m3stats_tbl">
<tr id="m3stats_tbl_title">
<td>날짜</td>
<td colspan="2">전체방문</td>
<td colspan="2">직접방문</td>
<td colspan="2">가입</td>
<?if($config[cf_login_point]) {?>
<td colspan="2">로그인</td><?}?>
<td colspan="2">원글/댓글</td>
</tr>
<?
$day .= " (".get_yoil($print_date[i]).")";
for($i=0; $i<$limit; $i++) {
$date = date("Y-m-d", time()-$i*24*60*60);
$print_date[$i] = substr($date,2);
$date_1 = date("Y-m-d", time()-($i-1)*24*60*60);
// 방문자 수
$temp = sql_fetch("select vs_count from `g4_visit_sum` where vs_date='$date'");
$count_visit[$i] = intval($temp[vs_count]);
if($max_count_visit<$count_visit[$i]) $max_count_visit = $count_visit[$i];
// 직접 방문자 수 (referer가 없는 경우)
$temp = sql_fetch("select count(*) as total from `g4_visit` where vi_date='$date' AND vi_referer=''");
$count_direct[$i] = $temp[total];
if($max_count_direct<$count_direct[$i]) { $max_count_direct = $count_direct[$i];
if($max_count_direct>$config[cf_3]){
mysql_query(" update g4_config set cf_3='$max_count_direct' ");
}
}
// 가입자 수 (mb_datetime으로 확인)
$temp = sql_fetch("select count(*) as total from `g4_member` where mb_datetime LIKE '$date%'");
$count_join[$i] = $temp[total];
if($max_count_join<$count_join[$i]) $max_count_join = $count_join[$i];
// 로그인 수 (로그인 포인트가 없으면 계산 안되므로 안 띄운다)
if($config[cf_login_point]) {
$temp = sql_fetch("select count(*) as total from `g4_point` where po_rel_table='@login' AND po_datetime LIKE '$date%'");
$count_login[$i] = $temp[total];
if($max_count_login<$count_login[$i]) $max_count_login = $count_login[$i];
if($max_count_login>$config[cf_2]){
mysql_query(" update g4_config set cf_2='$max_count_login' ");
}
}
// 원글 수
$temp = sql_fetch("select count(*) as total from `g4_board_new` where wr_id=wr_parent AND bn_datetime LIKE '$date%'");
$count_article[$i] = $temp[total];
if($max_count_article<$count_article[$i]) $max_count_article = $count_article[$i];
// 댓글 수
$temp = sql_fetch("select count(*) as total from `g4_board_new` where wr_id!=wr_parent AND bn_datetime LIKE '$date%'");
$count_comment[$i] = $temp[total];
if($max_count_comment<$count_comment[$i]) $max_count_comment = $count_comment[$i];
}
for($i=0; $i<$limit; $i++) {
?>
<tr>
<td width=80><?=$print_date[$i]?> (<?=get_yoil($print_date[$i])?>)</td>
<td class="m3stats_align_c"><?=$count_visit[$i]?></td>
<td><img src="<?=$g4[path]?>/partner/img/graph.gif" height="9" width="<?=ceil($count_visit[$i]/$max_count_visit*$bar_width)?>" /></td>
<td class="m3stats_align_c"><?=$count_direct[$i]?></td>
<td><img src="<?=$g4[path]?>/partner/img/graph.gif" height="9" width="<?=ceil($count_direct[$i]/$max_count_direct*$bar_width)?>" /></td>
<td class="m3stats_align_c"><?=$count_join[$i]?></td>
<td><img src="<?=$g4[path]?>/partner/img/graph.gif" height="9" width="<?=ceil($count_join[$i]/$max_count_join*$bar_width)?>" /></td>
<?if($config[cf_login_point]) {?>
<td class="m3stats_align_c"><?=$count_login[$i]?></td>
<td><img src="<?=$g4[path]?>/partner/img/graph.gif" height="9" width="<?=ceil($count_login[$i]/$max_count_login*$bar_width)?>" /></td>
<?}?>
<td class="m3stats_align_c"><?=$count_article[$i]?>/<?=$count_comment[$i]?></td>
<td><img src="<?=$g4[path]?>/partner/img/graph.gif" height="9" width="<?=ceil($count_article[$i]/$max_count_article*$bar_width)?>" /></td>
</tr>
<?}?>
</table>
<?
// 날짜 설정
if(!$fr_date) $fr_date = date("Y-m-d", strtotime("0 days ago"));
if(!$to_date) $to_date = $g4[time_ymd];
// 주사 방지
$fr_date = substr($fr_date, 0, 10);
$to_date = substr($to_date, 0, 10);
$site = substr($site, 0, 10);
$site_ori = $site;
// 검색사이트들
$site_arr = array("Google", "Nate", "Yahoo", "Daum", "Naver", "Bing");
$surl_arr = array("Google" => "http://www.google.%", "Nate" => "%nate.com%", "Yahoo" => "%search.yahoo.com%", "Daum" => "%search.daum.net%", "Naver" => "%search.naver.com%", "Bing" => "http://www.bing.com%");
$svar_arr = array("Google" => "q", "Nate" => "q", "Yahoo" => "p", "Daum" => "q", "Naver" => "query", "Bing" => "q");
?>
<style type="text/css">
#m3tbl { border:solid 1px #CCC; border-collapse:collapse;}
#m3tbl th { border:solid 1px #CCC; text-align:center;}
#m3tbl td { border:solid 1px #CCC; text-align:center; padding:2px 8px;}
#div_m3sq ul { display:inline; padding:0; margin:0; }
#div_m3sq ul li { display:inline; padding:0 10px; border:solid 1px #CCC; }
</style>
<div id="div_m3sq">
<br /><br />
<img src=./img/bul2.gif border=0 align=absmiddle> <b>외부 유입 검색어(키워드) 분석기</b><br /><br />
<ul>
<li><a href="<?=$PHP_SELF?>?to_date=<?=$to_date?>&fr_date=<?=$fr_date?>">All</a></li>
<? foreach($site_arr as $site) { ?>
<li><a href="<?=$PHP_SELF?>?site=<?=$site?>&to_date=<?=$to_date?>&fr_date=<?=$fr_date?>"><?=$site?></a></li>
<? } ?>
</ul>
<br />
<br />
<form method="get" action="<?=$_SERVER[PHP_SELF]?>">
<input type="hidden" name="site" value="<?=$site_ori?>" />
시작 : <input type="text" name="fr_date" value="<?=$fr_date?>" size="10" />
끝 : <input type="text" name="to_date" value="<?=$to_date?>" size="10" />
<input type="submit" value="go" /> | <a href="<?=$PHP_SELF?>?site=<?=$site2?>&to_date=<?=$to_date?>&fr_date=<?=$to_date?>">오늘</a> |
<a href="<?=$PHP_SELF?>?site=<?=$site2?>&to_date=<?=$to_date?>&fr_date=<?=$fr_date?>">어제</a> |
<a href="<?=$PHP_SELF?>?site=<?=$site2?>&to_date=<?=$to_date?>&day=7">지난1주일</a> |
<a href="<?=$PHP_SELF?>?site=<?=$site2?>&to_date=<?=$to_date?>&day=30">지난1달</a><br />
</form><br />
<form name=fsearch method=get />
결과내 검색 : <input type="text" id="sq" name="sq" value="<? echo $_GET[sq] ?>" />
<input type="submit" value="search" />
<input type="button" value="reset" onclick="resetsq()" />
<span id="search_cnt"></span><br />
</form>
<br />
<?
// vi_referer에서 사이트 찾고, vi_date로 범위 정하기, 정렬은 vi_id 역순 (속도 개선 필요)
if(in_array($site_ori, $site_arr)) {
$where1 = "vi_referer LIKE '{$surl_arr[$site_ori]}' ";
}
else { // 5개 사이트 모두 포함
$where1 = " ( ";
foreach($surl_arr as $site => $surl) {
$where1 .= " vi_referer LIKE '$surl' OR ";
}
$where1 .= " 0 )";
}
$sql = " select count(distinct vi_id) as cnt from `$g4[visit_table]` where $where1 AND vi_date>='$fr_date' AND vi_date<='$to_date' order by vi_id desc";
$row = sql_fetch($sql);
echo "<br>전체 :";
echo $total_count = number_format($row[cnt],0)."건";
$rows = $config[cf_page_rows];
$total_page = ceil($total_count / $rows); // 전체 페이지 계산
if ($page == "") { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함
$query = sql_query("select * from `$g4[visit_table]` where $where1 AND vi_date>='$fr_date' AND vi_date<='$to_date' order by vi_id desc limit $from_record, $rows");
$qstr1 = "sel_field=$sel_field&search=$search&save_search=$search";
$qstr = "$qstr1&sort1=$sort1&site2=$site2&sort2=$sort2&page=$page";
$cnt = 1;
$cnt2 = array();
//echo $num = mysql_num_rows($query);
while($row = sql_fetch_array($query)) {
// 어느 사이트인지 찾기
foreach($surl_arr as $site => $surl) {
if(strstr($row[vi_referer], str_replace("%", "", $surl))) {
$engine = $site;
break;
}
}
// 검색문자열 찾기
$regex = "/(\?|&){$svar_arr[$engine]}\=([^&]*)/i";
preg_match($regex, $row[vi_referer], $matches);
$querystr = $matches[2];
// 보통 검색어 사이를 +로 넘긴다
$querystr = str_replace("+", " ", $querystr);
// %ab 이런 식으로 된 걸 바꿔주기
$querystr = urldecode($querystr);
// 네이버는 unicode로 된 경우도 있어서
if($engine=="Naver") $querystr = utf8_urldecode($querystr);
// 캐릭터셋이 UTF-8인 경우는 EUC-KR로 고치기 (UTF-8 유저는 EUC-KR과 UTF-8을 서로 바꿔주면 될 듯)
$charset = mb_detect_encoding($querystr, "ASCII, EUC-KR, UTF-8");
if($charset=="EUC-KR") $querystr = iconv("EUC-KR", "UTF-8", $querystr);
// 자잘한 처리들
$querystr = trim($querystr);
$querystr = htmlspecialchars($querystr);
// 가끔 빈 것들도 있다 -_-
// if(!strlen($querystr)) continue;
// 에코
// 카운트용 변수
$cnt++;
$cnt2[$engine]++;
} ?>
Total : <?=$days=(strtotime($to_date)-strtotime($fr_date))/(24*60*60)+1?> days, <?=$cnt-1?> results (<?=sprintf("%.1f",$cnt/$days)?>/day)<br />
<? if(!$site_ori) { // 모든 사이트의 경우 비율 분석
foreach($cnt2 as $engine => $count) {
echo "$engine : $count (".sprintf("%.1f",$count/$cnt*100)."%) ";
}
}?>
<?
// vi_referer에서 사이트 찾고, vi_date로 범위 정하기, 정렬은 vi_id 역순 (속도 개선 필요)
if(in_array($site_ori, $site_arr)) {
$where1 = "vi_referer LIKE '{$surl_arr[$site_ori]}' ";
}
else { // 5개 사이트 모두 포함
$where1 = " ( ";
foreach($surl_arr as $site => $surl) {
$where1 .= " vi_referer LIKE '$surl' OR ";
}
$where1 .= " 0 )";
}
$sql = " select count(distinct vi_id) as cnt from `$g4[visit_table]` where $where1 AND vi_date>='$fr_date' AND vi_date<='$to_date' order by vi_id desc";
$row = sql_fetch($sql);
//echo "전체 :";
$total_count = $row[cnt];
$rows = $config[cf_page_rows];
$total_page = ceil($total_count / $rows); // 전체 페이지 계산
if ($page == "") { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함
$query = sql_query("select * from `$g4[visit_table]` where $where1 AND vi_date>='$fr_date' AND vi_date<='$to_date' order by vi_id desc limit $from_record, $rows");
$qstr1 = "sel_field=$sel_field&search=$search&save_search=$search";
$qstr = "$qstr1&sort1=$sort1&site2=$site2&sort2=$sort2&page=$page";
?>
<table id="m3tbl" border="0" width="100%">
<tr>
<th width="30">번호</td>
<th width="50">날짜</td>
<th width="50">시간</td>
<th>사이트</td>
<th width="60">모바일</td>
<th width="150">검색어</td>
<td></td>
<th width="30">번호</td>
<th width="50">날짜</td>
<th width="50">시간</td>
<th>사이트</td>
<th width="60">모바일</td>
<th width="150">검색어</td>
</tr>
<tr>
<?
$cnt = 1;
$cnt2 = array();
while($row = sql_fetch_array($query)) {
// 어느 사이트인지 찾기
foreach($surl_arr as $site => $surl) {
if(strstr($row[vi_referer], str_replace("%", "", $surl))) {
$engine = $site;
break;
}
}
// 검색문자열 찾기
$regex = "/(\?|&){$svar_arr[$engine]}\=([^&]*)/i";
preg_match($regex, $row[vi_referer], $matches);
$querystr = $matches[2];
// 보통 검색어 사이를 +로 넘긴다
$querystr = str_replace("+", " ", $querystr);
// %ab 이런 식으로 된 걸 바꿔주기
$querystr = urldecode($querystr);
// 네이버는 unicode로 된 경우도 있어서
if($engine=="Naver") $querystr = utf8_urldecode($querystr);
// 캐릭터셋이 UTF-8인 경우는 EUC-KR로 고치기 (UTF-8 유저는 EUC-KR과 UTF-8을 서로 바꿔주면 될 듯)
$charset = mb_detect_encoding($querystr, "ASCII, EUC-KR, UTF-8");
if($charset=="EUC-KR") $querystr = iconv("EUC-KR", "UTF-8", $querystr);
// 자잘한 처리들
$querystr = trim($querystr);
$querystr = htmlspecialchars($querystr);
// 가끔 빈 것들도 있다 -_-
// if(!strlen($querystr)) continue;
//echo $row[vi_referer];
// if(preg_match("/mobile/",$row[vi_referer])){
// $mode="모바일";
// }
// 에코
echo "<td>$cnt</td>";
echo "<td>".date("m-d",strtotime($row[vi_date]))."</td>";
echo "<td>$row[vi_time]</td>";
echo "<td><a href=\"$PHP_SELF?site=$engine\"><img src=\"$g4[admin_path]/img/".strtolower($engine).".jpg\" /></a></td>";
echo "<td>".$mode = strpos($row[vi_referer],"http://m.")."</td>";
if($querystr) echo "<td style=\"text-align:left\" id=\"m3sqtd[$cnt]\"><a href=\"$row[vi_referer]\" target=\"_blank\">$querystr</a></td>";
else echo "<td style=\"text-align:left\" id=\"m3sqtd[$cnt]\">Robot</td>";
echo "<td></td>";
if($cnt%2 == 0){
echo "</tr><tr>";
}
// 카운트용 변수
$cnt++;
$cnt2[$engine]++;
}
echo "</tr>";
ksort($cnt2);
// 베짱이님 제공 함수
function utf8_urldecode($str, $chr_set='CP949') {
$callback_function = create_function('$matches, $chr_set="'.$chr_set.'"', 'return iconv("UTF-16BE", $chr_set, pack("n*", hexdec($matches[1])));');
return rawurldecode(preg_replace_callback('/%u([[:alnum:]]{4})/', $callback_function, $str));
}
?>
</table><br />
<table width=100%>
<tr>
<td width=50%> </td>
<td width=50% align=right><?=get_paging($config[cf_write_pages], $page, $total_page, "$_SERVER[PHP_SELF]?$qstr&page=");?></td>
</tr>
</table>
</div>
<script type="text/javascript">
function findsq(sq) {
if(sq=="") return;
var i = 1;
var search_cnt = 0; // 결과내 검색 개수
while(a = document.getElementById("m3sqtd["+i+"]")) {
if(a.innerText.toLowerCase().match(sq.toLowerCase())) { // 찾는 값이 있으면 보이기
a.parentNode.style.display="";
search_cnt++;
} else { // 찾는 값이 없으면 숨기기
a.parentNode.style.display="none";
}
i++;
}
document.getElementById("search_cnt").innerText = "결과내 검색 : " + search_cnt + "건";
}
function resetsq() {
var i = 0;
while(a = document.getElementById("m3sqtd["+i+"]")) {
a.parentNode.style.display=""; // 모든 행의 display 속성 reset
i++;
}
document.getElementById("search_cnt").innerText = "";
document.getElementById("sq").value = "";
}
</script>
<?
//마지막 인클루드
include_once("$g4[admin_path]/admin.tail.php");
?>
>>현재 검색어를 검색시 쿼리를 조회되어야하는데요~ get으로 변경해서 할려고하는데
잘안되네요 고수님들 도와주실분~~
댓글 전체