사이트방문 검색키워드를 통계내고싶은데요.. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

사이트방문 검색키워드를 통계내고싶은데요.. 정보

사이트방문 검색키워드를 통계내고싶은데요..

본문

<style type="text/css">
#m3stats_tbl {border-collapse:collapse;}
#m3stats_tbl td {border:solid 1px #7777777;}
#m3stats_tbl_title {font-weight:700;text-align:center;}
.m3stats_align_c {text-align:center;}
</style>

<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>

<?
// 날짜 설정
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("Naver", "Daum", "Yahoo", "Nate", "Google", "Bing");
$surl_arr = array("Naver" => "%search.naver.com%", "Daum" => "%search.daum.net%", "Yahoo" => "%search.yahoo.com%", "Nate" => "%nate.com%", "Google" => "http://www.google.%", "Bing" => "http://www.bing.com%");
$svar_arr = array("Naver" => "query", "Daum" => "q", "Yahoo" => "p", "Nate" => "q", "Google" => "q", "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:0px; margin:3px; }
#div_m3sq ul li { display:inline; padding:5px 12px 5px 12px; border:solid 1px #CCC; background:#f0f2f8;}
</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?>">전체사이트</a></li>
<? foreach($site_arr as $site) { ?>
<li><a href="<?=$PHP_SELF?>?site=<?=$site?>&to_date=<?=$to_date?>&fr_date=<?=$fr_date?>"><b><em><?=$site?></em></b></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 " /><br />
</form><br />
<form action="javascript:;" onsubmit="findsq(getElementById('sq').value)" />
결과내 검색 : <input type="text" id="sq" name="sq" value="<?=$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 )";
}

$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");
?>
<table id="m3tbl">
<tr><th width="90">방문 날짜</td>
<th>방문 시간</td>
<th>검색 사이트</td>
<th>검색 키워드</td>
</tr>
<?
$cnt = 0;
$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, UTF-8, EUC-KR");
if($charset=="UTF-8") $querystr = iconv("UTF-8", "EUC-KR", $querystr);
// 자잘한 처리들
$querystr = trim($querystr);
$querystr = htmlspecialchars($querystr);
// 가끔 빈 것들도 있다 -_-
if(!strlen($querystr)) continue;
// 에코
echo "<tr><td>$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 style=\"text-align:left\" id=\"m3sqtd[$cnt]\"><a href=\"$row[vi_referer]\" target=\"_blank\">$querystr</a></td></tr>\n";
// 카운트용 변수
$cnt++;
$cnt2[$engine]++;
}
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 />
전체 : 최근 <?=$days=(strtotime($to_date)-strtotime($fr_date))/(24*60*60)+1?> 일간, <strong><em><?=$cnt?></em></strong> 회 키워드 방문 (1일 평균 : <strong><em><?=sprintf("%.1f",$cnt/$days)?></em></strong> 회)<br /><br />
<? if(!$site_ori) { // 모든 사이트의 경우 비율 분석
foreach($cnt2 as $engine => $count) {
echo "$engine : $count (".sprintf("%.1f",$count/$cnt*100)."%)<br />";
}
}?>

</div>

<script type="text/javascript">
function findsq(sq) {
if(sq=="") return;
var i = 0;
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>

========================================================================
visit_keyword.php파일 소스인데요..
위의 소스를 수정해서 사이트를 방문한 검색키워드의 통계를 냈으면 하는데 어떻게 수정하면좋을지...
자세히 좀 알려주시면 고맙겠습니다.

댓글 전체

전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT