크롬80버전 결제 이슈, 영카트5 주요패치 확인!

방문자 특정 IP 걸러내기

컨텐츠몰 10% 할인!
그누보드5
영카트5
매뉴얼
Q & A
제작의뢰
컨텐츠몰
부가서비스
소모임
커뮤니티
방문자 특정 IP 걸러내기

QA

SIR 컨텐츠몰 10% 특별할인 - 코로나19 바이러스로 어려운 시기, SIR이 함께 하겠습니다.

방문자 특정 IP 걸러내기

본문

접속자집계에서 66.249. 로 시작하는 구글 아이피가 실제 방문자로 나타나서 방문자 수가 정확하지가 않습니다.

66.249. 로 시작하는 아이피는 방문자로 표시 하지 않는 방법이 있을까요?

이 글을 내 페이스북 계정으로 보내기 이 글을 내 트위터 계정으로 보내기

이 질문에 댓글 쓰기 :

답변 3

채택됨

팻시님의 답변

헥갈리니까요.

// 여기부터
<?php if( substr( $_SERVER['REMOTE_ADDR'] , 0, 6 ) == "66.249" ) { ?>
<?php } else { ?>
      // 여기있던것만 쓰세요.
<?php } ?>
// 여기까지 조건문 걷어내고요.

    if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
    // 컴퓨터의 아이피와 쿠키에 저장된 아이피가 다르다면 테이블에 반영함
 
    //***** 여기부터 *************************************************
    // 아래 변수를 추가하고
    $is_goo_bot_ip = (substr($_SERVER['REMOTE_ADDR'], 0, 6) == "66.249");
    // 원래 아래와 같던것을
    // if (get_cookie('ck_visit_ip') != $_SERVER['REMOTE_ADDR'])
    // 아래와 같이 바꾸시면 되요.
    if ( ! $is_goo_bot_ip && ( get_cookie('ck_visit_ip') != $_SERVER['REMOTE_ADDR'] ) )
    //****** 여기까지만 변경 **************************************
    {
        set_cookie('ck_visit_ip', $_SERVER['REMOTE_ADDR'], 86400); // 하루동안 저장
        // $_SERVER 배열변수 값의 변조를 이용한 SQL Injection 공격을 막는 코드입니다. 110810
        $remote_addr = escape_trim($_SERVER['REMOTE_ADDR']);
        $referer = "";
        if (isset($_SERVER['HTTP_REFERER']))
            $referer = escape_trim(clean_xss_tags(strip_tags($_SERVER['HTTP_REFERER'])));
        $user_agent  = escape_trim(clean_xss_tags(strip_tags($_SERVER['HTTP_USER_AGENT'])));
        $vi_browser = '';
        $vi_os = '';
        $vi_device = '';
        if(version_compare(phpversion(), '5.3.0', '>=') && defined('G5_BROWSCAP_USE') && G5_BROWSCAP_USE) {
            include_once(G5_BBS_PATH.'/visit_browscap.inc.php');
        }
        $sql = " insert {$g5['visit_table']} ( vi_id, vi_ip, vi_date, vi_time, vi_referer, vi_agent, vi_browser, vi_os, vi_device ) values ( '{$vi_id}', '{$remote_addr}', '".G5_TIME_YMD."', '".G5_TIME_HIS."', '{$referer}', '{$user_agent}', '{$vi_browser}', '{$vi_os}', '{$vi_device}' ) ";
        $result = sql_query($sql, FALSE);
        // 정상으로 INSERT 되었다면 방문자 합계에 반영
        if ($result) {
            $sql = " insert {$g5['visit_sum_table']} ( vs_count, vs_date) values ( 1, '".G5_TIME_YMD."' ) ";
            $result = sql_query($sql, FALSE);
            // DUPLICATE 오류가 발생한다면 이미 날짜별 행이 생성되었으므로 UPDATE 실행
            if (!$result) {
                $sql = " update {$g5['visit_sum_table']} set vs_count = vs_count + 1 where vs_date = '".G5_TIME_YMD."' ";
                $result = sql_query($sql);
            }
            // INSERT, UPDATE 된건이 있다면 기본환경설정 테이블에 저장
            // 방문객 접속시마다 따로 쿼리를 하지 않기 위함 (엄청난 쿼리를 줄임 ^^)
            // 오늘
            $sql = " select vs_count as cnt from {$g5['visit_sum_table']} where vs_date = '".G5_TIME_YMD."' ";
            $row = sql_fetch($sql);
            $vi_today = $row['cnt'];
            // 어제
            $sql = " select vs_count as cnt from {$g5['visit_sum_table']} where vs_date = DATE_SUB('".G5_TIME_YMD."', INTERVAL 1 DAY) ";
            $row = sql_fetch($sql);
            $vi_yesterday = $row['cnt'];
            // 최대
            $sql = " select max(vs_count) as cnt from {$g5['visit_sum_table']} ";
            $row = sql_fetch($sql);
            $vi_max = $row['cnt'];
            // 전체
            $sql = " select sum(vs_count) as total from {$g5['visit_sum_table']} ";
            $row = sql_fetch($sql);
            $vi_sum = $row['total'];
            $visit = '오늘:'.$vi_today.',어제:'.$vi_yesterday.',최대:'.$vi_max.',전체:'.$vi_sum;
            // 기본설정 테이블에 방문자수를 기록한 후
            // 방문자수 테이블을 읽지 않고 출력한다.
            // 쿼리의 수를 상당부분 줄임
            sql_query(" update {$g5['config_table']} set cf_visit = '{$visit}' ");
        }
    }
주소복사
채택됨
답변의 댓글

팻시님의 답변

if( substr( $_SERVER['REMOTE_ADDR'] , 0, 6 ) == "66.249" ) {
   // 팻쑤. 로그 작성안함
} else {
   // 로그 작성함
}
주소복사
답변의 댓글
jaykjayk5님의 댓글
<?php if( substr( $_SERVER['REMOTE_ADDR'] , 0, 6 ) == "66.249" ) { ?>
<?php } else { ?>
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가

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

    // $_SERVER 배열변수 값의 변조를 이용한 SQL Injection 공격을 막는 코드입니다. 110810
    $remote_addr = escape_trim($_SERVER['REMOTE_ADDR']);
    $referer = "";
    if (isset($_SERVER['HTTP_REFERER']))
        $referer = escape_trim(clean_xss_tags(strip_tags($_SERVER['HTTP_REFERER'])));
    $user_agent  = escape_trim(clean_xss_tags(strip_tags($_SERVER['HTTP_USER_AGENT'])));
    $vi_browser = '';
    $vi_os = '';
    $vi_device = '';
    if(version_compare(phpversion(), '5.3.0', '>=') && defined('G5_BROWSCAP_USE') && G5_BROWSCAP_USE) {
        include_once(G5_BBS_PATH.'/visit_browscap.inc.php');
    }
    $sql = " insert {$g5['visit_table']} ( vi_id, vi_ip, vi_date, vi_time, vi_referer, vi_agent, vi_browser, vi_os, vi_device ) values ( '{$vi_id}', '{$remote_addr}', '".G5_TIME_YMD."', '".G5_TIME_HIS."', '{$referer}', '{$user_agent}', '{$vi_browser}', '{$vi_os}', '{$vi_device}' ) ";

    $result = sql_query($sql, FALSE);
    // 정상으로 INSERT 되었다면 방문자 합계에 반영
    if ($result) {
        $sql = " insert {$g5['visit_sum_table']} ( vs_count, vs_date) values ( 1, '".G5_TIME_YMD."' ) ";
        $result = sql_query($sql, FALSE);

        // DUPLICATE 오류가 발생한다면 이미 날짜별 행이 생성되었으므로 UPDATE 실행
        if (!$result) {
            $sql = " update {$g5['visit_sum_table']} set vs_count = vs_count + 1 where vs_date = '".G5_TIME_YMD."' ";
            $result = sql_query($sql);
        }

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

        // 오늘
        $sql = " select vs_count as cnt from {$g5['visit_sum_table']} where vs_date = '".G5_TIME_YMD."' ";
        $row = sql_fetch($sql);
        $vi_today = $row['cnt'];

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

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

        // 전체
        $sql = " select sum(vs_count) as total from {$g5['visit_sum_table']} ";
        $row = sql_fetch($sql);
        $vi_sum = $row['total'];

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

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

---------------------------------------------------------------------------------------------------------------------------------

이렇게 했는데 맞나요?

열린이글님의 답변

thumb-1935251410_1578063287.1103_730x397.png

주소복사
답변의 댓글
답변을 작성하시기 전에 로그인 해주세요.
전체 37
고마운 분의 도움으로 질문을 해결하셨다면, 채택을 눌러서 감사의 마음을 전하세요.
어떻게 질문해야 할지 모른다면 질문하는 방법을 읽어 보신후 질문해 보세요.
QA 내용 검색

회원로그인

진행중 포인트경매

  1. 참여17 회 시작20.03.25 10:40 종료20.04.01 10:40

(주)에스아이알소프트 (06253) 서울특별시 강남구 도곡로1길 14, 6층 624호 (역삼동, 삼일프라자) 대표메일:admin@sir.kr
사업자등록번호:217-81-36347 대표:홍석명 통신판매업신고번호:2014-서울강남-02098호 개인정보보호책임자:이총

© SIRSOFT