방문자수, 페이지 새로 고침할 때마다 2씩 증가하는 문제 > 그누4 질문답변

그누4 질문답변

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

방문자수, 페이지 새로 고침할 때마다 2씩 증가하는 문제 정보

방문자수, 페이지 새로 고침할 때마다 2씩 증가하는 문제

본문

안녕하세요.

방문자수 페이지 새로 고침할 때마다 증가하게 할려고,

이전에 여기 분들이 알려주신 대로,

visit_insert.inc.php 파일을 다음과 같이 수정했습니다.


<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

// 컴퓨터의 아이피와 쿠키에 저장된 아이피가 다르다면 테이블에 반영함
// if (get_cookie('ck_visit_ip') != $_SERVER['REMOTE_ADDR']) {
//    set_cookie('ck_visit_ip', $_SERVER['REMOTE_ADDR'], 86400); // 하루동안 저장
// 위에 3줄은 주석 처리

    $tmp_row = sql_fetch(" select max(vi_id) as max_vi_id from $g4[visit_table] ");
    $vi_id = $tmp_row[max_vi_id] + 1;

    // $_SERVER 배열변수 값의 변조를 이용한 SQL Injection 공격을 막는 코드입니다. 110810
    $remote_addr = mysql_real_escape_string($_SERVER['REMOTE_ADDR']);
    $referer    = mysql_real_escape_string($_SERVER['HTTP_REFERER']);
    $user_agent  = mysql_real_escape_string($_SERVER['HTTP_USER_AGENT']);
    $sql = " insert $g4[visit_table] ( vi_id, vi_ip, vi_date, vi_time, vi_referer, vi_agent ) values ( '$vi_id', '$remote_addr', '$g4[time_ymd]', '$g4[time_his]', '$referer', '$user_agent' ) ";
    //$sql = " insert $g4[visit_table] ( vi_id, vi_ip, vi_date, vi_time, vi_referer, vi_agent ) values ( '$vi_id', '$_SERVER[REMOTE_ADDR]', '$g4[time_ymd]', '$g4[time_his]', '$_SERVER[HTTP_REFERER]', '$_SERVER[HTTP_USER_AGENT]' ) ";


    // $result = sql_query($sql, FALSE); 주석처리하고 밑에처럼 변경
    $result = 1;
    // 정상으로 INSERT 되었다면 방문자 합계에 반영
    if ($result) {
        $sql = " insert $g4[visit_sum_table] ( vs_count, vs_date) values ( 1, '$g4[time_ymd]' ) ";
        $result = sql_query($sql, FALSE);
       
        // DUPLICATE 오류가 발생한다면 이미 날짜별 행이 생성되었으므로 UPDATE 실행
        if (!$result) {
            $sql = " update $g4[visit_sum_table] set vs_count = vs_count + 1 where vs_date = '$g4[time_ymd]' ";
            $result = sql_query($sql);
        }

        // INSERT, UPDATE 된건이 있다면 기본환경설정 테이블에 저장
        // 방문객 접속시마다 따로 쿼리를 하지 않기 위함 (엄청난 쿼리를 줄임 ^^)

        // 오늘
        $sql = " select vs_count as cnt from $g4[visit_sum_table] where vs_date = '$g4[time_ymd]' ";
        $row = sql_fetch($sql);
        $vi_today = $row[cnt];

        // 어제
        $sql = " select vs_count as cnt from $g4[visit_sum_table] where vs_date = DATE_SUB('$g4[time_ymd]', INTERVAL 1 DAY) ";
        $row = sql_fetch($sql);
        $vi_yesterday = $row[cnt];

        // 최대
        $sql = " select max(vs_count) as cnt from $g4[visit_sum_table] ";
        $row = sql_fetch($sql);
        $vi_max = $row[cnt];

        // 전체
        //$sql = " select count(*) as cnt from $g4[visit_table] ";
        $sql = " select sum(vs_count) as total from $g4[visit_sum_table] ";
        $row = sql_fetch($sql);
        $vi_sum = $row[total];

        $visit = "오늘:$vi_today,어제:$vi_yesterday,최대:$vi_max,전체:$vi_sum";

        // 기본설정 테이블에 방문자수를 기록한 후
        // 방문자수 테이블을 읽지 않고 출력한다.
        // 쿼리의 수를 상당부분 줄임
        sql_query(" update $g4[config_table] set cf_visit = '$visit' ");
    }

?>

비회원(비로그인)일 경우에는 페이지 새로고침하면, 1씩 증가하는데...

회원으로 로그인해서 새로고침하면 2씩 증가합니다.;; 왜 그런 것일까요.

php 초보나 아닌 무식이라서 어떤 걸 건드려야될지 모르겠네요.

+1 을 +0 으로 바꿔보기도 하고 그랬는데;; 오류나거나 안되네요.

아시는 분 답변 주시면 정말 감사하겠습니다. (_ _)

댓글 전체

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

회원로그인

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