메인페이지 접속할때 마다 무조건 방문자수(카운터) 증가하기 ( 추가 ) > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

메인페이지 접속할때 마다 무조건 방문자수(카운터) 증가하기 ( 추가 ) 정보

메인페이지 접속할때 마다 무조건 방문자수(카운터) 증가하기 ( 추가 )

본문

원본 : http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=28442&sca=&sfl=wr_subject%7C%7Cwr_content&stx=%EB%B0%A9%EB%AC%B8%EC%9E%90

- vitamin 님의 글 -

-------------
++ 추가 내용

아래에서 보시면,아시겟지만 새로고침시 방문자수가 +1 되게 되어있습니다.
이번에는 랜덤으로 돌려, 나오는값을 +1 시켜보도록 하겠습니다.

$result = rand(1,5); // 1~5 사이에 랜덤 으로 돌림.

아래 검색으로

+ 1 을 찾아주세요. 3군데 쯤 있을것입니다.

$vi_id = $tmp_row[max_vi_id] + 1;
$sql = " update $g4[visit_sum_table] set vs_count = vs_count + 1 where vs_date = '$g4[time_ymd]' ";
$sql = " update $g4[visit_sum_table] set vs_count = vs_count + 1 where vs_date = '$g4[time_ymd]' ";

이렇게 있습니다.

이것을 아래와 같이 바꾸어줍니다.

$vi_id = $tmp_row[max_vi_id] + $result;
$sql = " update $g4[visit_sum_table] set vs_count = vs_count + $result where vs_date = '$g4[time_ymd]' ";
$sql = " update $g4[visit_sum_table] set vs_count = vs_count + $result where vs_date = '$g4[time_ymd]' ";

* 테스트 안해봄.

이렇게 바꾸어 주시면 되겠습니다.

-----------
/bbs/visit_insert.inc.php 파일을 수정해야 합니다.
수정할 부분은 기존 소스에서  "######..."으로 구분해 놓은
아래쪽 내용만 추가하면 됩니다.
그리고 소스의  if($m_url=="/index.php"){  이부분에서 메인페이지 경로가 틀린 경우
"/index.php"를 메인페이지 절대경로로 수정해야 됩니다.


<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); // 하루동안 저장

    $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);
    // 정상으로 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' ");
    }
}

// #####################  추가내용 ########################
// 메인페이지 접속시마다 무조건 방문자수 증가
else {
    $m_url = $PHP_SELF;
    if($m_url=="/index.php"){
        $sql = " update $g4[visit_sum_table] set vs_count = vs_count + 1 where vs_date = '$g4[time_ymd]' ";
        $result = sql_query($sql);

        // 오늘
        $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 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' ");
    }

?>
-------------
추천
4

댓글 1개

전체 59 |RSS
그누4 팁자료실 내용 검색

회원로그인

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