방문자집계 작업중 질문드립니다.

방문자집계 작업중 질문드립니다.

QA

방문자집계 작업중 질문드립니다.

본문

방문자 집계 visit_insert.inc.php파일에 보면 

 

// 컴퓨터의 아이피와 쿠키에 저장된 아이피가 다르다면 테이블에 반영함 

if (get_cookie('ck_visit_ip') != $_SERVER['REMOTE_ADDR'] ) 

{

라고 있고 쿠키생성하고 다른것들을 실행을 하는데 

 

저같은 경우에는 도메인이 여러개여서 각 도메인별로 집계를 보기위하여 

도메인에 따라서 특정 변수의 값을 설정해서 

저장된 쿠키와 접속아이피가 같을경우 저장된 변수와 설정변수가 같으면 패스 틀리면 

다시 새로운 변수의 집계를 추가하는 방식을 하려고 합니다.

아래와 같이 수정을 했는데요.

 

if (get_cookie('ck_visit_ip') == $_SERVER['REMOTE_ADDR']){

$ck_sh_att = 'stop';

$cichk = sql_fetch("select * from {$g5['visit_table']} where vi_ip = '{$_SERVER['REMOTE_ADDR']}' ");

if($cichk['ck_site'] != $ck_site){$ck_sh_att = 'go';};

}

 

// 컴퓨터의 아이피와 쿠키에 저장된 아이피가 다르다면 테이블에 반영함

 

if (get_cookie('ck_visit_ip') != $_SERVER['REMOTE_ADDR'] || $ck_sh_site == 'go')

{

    set_cookie('ck_visit_ip', $_SERVER['REMOTE_ADDR'], 86400); // 하루동안 저장

 

    $tmp_row = sql_fetch(" select max(vi_id) as max_vi_id from {$g5['visit_table']} ");

    $vi_id = $tmp_row['max_vi_id'] + 1;

 

    // $_SERVER 배열변수 값의 변조를 이용한 SQL Injection 공격을 막는 코드입니다. 110810

    $remote_addr = escape_trim($_SERVER['REMOTE_ADDR']);

    $referer = "";

    if (isset($_SERVER['HTTP_REFERER']))

        $referer = escape_trim(clean_xss_tags($_SERVER['HTTP_REFERER']));

    $user_agent  = escape_trim(clean_xss_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, ck_site, vi_ip, vi_date, vi_time, vi_referer, vi_agent, vi_browser, vi_os, vi_device ) values ( '{$vi_id}', '{$ck_site},'{$remote_addr}', '".G5_TIME_YMD."', '".G5_TIME_HIS."', '{$referer}', '{$user_agent}', '{$vi_browser}', '{$vi_os}', '{$vi_device}' ) "; 

 

    $result = sql_query($sql, FALSE); 

 

그래서 아래와 같이 소스를 처리햇는데 이프문은 통과했으나 insert를 못시키더라구요..

(쿠키가 없을때 접속을하면 정상적으로 인설트 되고있습니다.)

 

 

$result = sql_query($sql, FALSE); 

쿼리를 못날리는듯 한데 혹시 이유를 알 수 있을까요?

 

 

 

이 질문에 댓글 쓰기 :

답변 2

$sql을 일단 echo 로 출력시키고

 

DB툴에서 실행시켜 보세요 ^^

db툴에서 실행결과
 #1062 - Duplicate entry '아이피-날짜' for key 'index1'
이전에 저장된 기록이 있어서 중복으로 올라가지 않아서 발생하는 오류인것같네요.. ㅠ
다른 방법을 모색하거나 좀 더 연구를 해야되겠네요..
답변 감사드립니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 90
QA 내용 검색

회원로그인

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