방문자집계 작업중 질문드립니다.
본문
방문자 집계 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툴에서 실행시켜 보세요 ^^
서바이캅님 답변처럼 이건 답변해주시는분이 코드를 다볼수 없습니다.
직접 echo $sql 하셔서 mysql에서 실행해보시는 것이 좋을듯합니다.