방문자 카운터에 관해서 질문좀 드릴께요 정보
방문자 카운터에 관해서 질문좀 드릴께요
본문
아원님 사이트에서 본 소스인데...
이 소스는 말 그대로 순수하게 방문자를 카운터한건데요.
여기서 어떻게 수정해야 중복방문자도 카운트되게 할수있을까요?
이왕이면 방문자가 좀 많게 보이고 싶어서 -.-;;;
<?
// 방문자
$sql = " select vs_count from $g4[visit_sum_table] where vs_date = '$g4[time_ymd]' ";
$visit = sql_fetch($sql);
// 전체 방문자
$sql = " select sum(vs_count) as count from $g4[visit_sum_table] ";
$visitsum = sql_fetch($sql);
?>
// 오늘 방문자
<?=number_format($visit['vs_count']);?>
// 전체 방문자
<?=number_format($visitsum['count']);?>
이 소스는 말 그대로 순수하게 방문자를 카운터한건데요.
여기서 어떻게 수정해야 중복방문자도 카운트되게 할수있을까요?
이왕이면 방문자가 좀 많게 보이고 싶어서 -.-;;;
<?
// 방문자
$sql = " select vs_count from $g4[visit_sum_table] where vs_date = '$g4[time_ymd]' ";
$visit = sql_fetch($sql);
// 전체 방문자
$sql = " select sum(vs_count) as count from $g4[visit_sum_table] ";
$visitsum = sql_fetch($sql);
?>
// 오늘 방문자
<?=number_format($visit['vs_count']);?>
// 전체 방문자
<?=number_format($visitsum['count']);?>
댓글 전체
중복 도 체크하실려면 update 부분을 고치셔야되요
그냥 임시로 간단하게 <?=number_format($visit['vs_count'] + 1000);?>
이런식으로 처리 해두었다가 일정하게 올라스면 뒤에 숫자만 지워주시면될듯하내요
그냥 임시로 간단하게 <?=number_format($visit['vs_count'] + 1000);?>
이런식으로 처리 해두었다가 일정하게 올라스면 뒤에 숫자만 지워주시면될듯하내요
update 부분을 어떤 페이지를 어케 고쳐야 할까요?
수고스러우시겠지만...좀 갈켜주심 안댈까요?
수고스러우시겠지만...좀 갈켜주심 안댈까요?
그누 루트에 tail.sub.php 파일열어보시면
재일 하단에
if ($tmp_row['cnt'])
{
이런식으로 체크하는부분이있을거에요 그부분 다지우시고 아래 else 부분만 이용하시면될꺼에요
$tmp_sql = " insert into $g4[login_table] ( lo_ip, mb_id, lo_datetime, lo_location, lo_url ) values ( '$_SERVER[REMOTE_ADDR]', '$member[mb_id]', '$g4[time_ymdhis]', '$lo_location', '$lo_url' ) ";
sql_query($tmp_sql, FALSE);
// 시간이 지난 접속은 삭제한다
sql_query(" delete from $g4[login_table] where lo_datetime < '".date("Y-m-d H:i:s", $g4[server_time] - (60 * $config[cf_login_minutes]))."' ");
// 부담(overhead)이 있다면 테이블 최적화
//$row = sql_fetch(" SHOW TABLE STATUS FROM `$mysql_db` LIKE '$g4[login_table]' ");
//if ($row['Data_free'] > 0) sql_query(" OPTIMIZE TABLE $g4[login_table] ");
재일 하단에
if ($tmp_row['cnt'])
{
이런식으로 체크하는부분이있을거에요 그부분 다지우시고 아래 else 부분만 이용하시면될꺼에요
$tmp_sql = " insert into $g4[login_table] ( lo_ip, mb_id, lo_datetime, lo_location, lo_url ) values ( '$_SERVER[REMOTE_ADDR]', '$member[mb_id]', '$g4[time_ymdhis]', '$lo_location', '$lo_url' ) ";
sql_query($tmp_sql, FALSE);
// 시간이 지난 접속은 삭제한다
sql_query(" delete from $g4[login_table] where lo_datetime < '".date("Y-m-d H:i:s", $g4[server_time] - (60 * $config[cf_login_minutes]))."' ");
// 부담(overhead)이 있다면 테이블 최적화
//$row = sql_fetch(" SHOW TABLE STATUS FROM `$mysql_db` LIKE '$g4[login_table]' ");
//if ($row['Data_free'] > 0) sql_query(" OPTIMIZE TABLE $g4[login_table] ");
말씀하신 부분을 삭제하고 업로드해봤는데...
새로고침 해도 카운터가 증가하지 않네요...
저 그럼말이죠...
처음에 말씀하신 임기응변식요...
<?=number_format($visit['vs_count'] + 1000);?> 이렇게 하면 너무 티나자나요
실제카운터가 1~10까지는 곱하기 1
11~100까지는 곱하기 2
101~500까지는 곱하기3
501 이상은 곱하기4
이걸 어떻게 표현해야 할까요?
정말 죄송합니다.
좀 갈켜주세요 -.-;;;
새로고침 해도 카운터가 증가하지 않네요...
저 그럼말이죠...
처음에 말씀하신 임기응변식요...
<?=number_format($visit['vs_count'] + 1000);?> 이렇게 하면 너무 티나자나요
실제카운터가 1~10까지는 곱하기 1
11~100까지는 곱하기 2
101~500까지는 곱하기3
501 이상은 곱하기4
이걸 어떻게 표현해야 할까요?
정말 죄송합니다.
좀 갈켜주세요 -.-;;;
아 죄송합니다. 로그인 체크 하는부분하고 햇갈렸내요..
bbs/visit_insert.inc.php 열어보시면
if (get_cookie('ck_visit_ip') != $_SERVER['REMOTE_ADDR']) {
set_cookie('ck_visit_ip', $_SERVER['REMOTE_ADDR'], 86400); // 하루동안 저장
bbs/visit_insert.inc.php 열어보시면
if (get_cookie('ck_visit_ip') != $_SERVER['REMOTE_ADDR']) {
set_cookie('ck_visit_ip', $_SERVER['REMOTE_ADDR'], 86400); // 하루동안 저장
아 죄송합니다. 로그인 체크 하는부분하고 햇갈렸내요..
bbs/visit_insert.inc.php 열어보시면 아래 저런 부분이있는대요
if문 체크하는 부분 지워주시면됩니다.
if (get_cookie('ck_visit_ip') != $_SERVER['REMOTE_ADDR']) {
set_cookie('ck_visit_ip', $_SERVER['REMOTE_ADDR'], 86400); // 하루동안 저장
내용
}
}
bbs/visit_insert.inc.php 열어보시면 아래 저런 부분이있는대요
if문 체크하는 부분 지워주시면됩니다.
if (get_cookie('ck_visit_ip') != $_SERVER['REMOTE_ADDR']) {
set_cookie('ck_visit_ip', $_SERVER['REMOTE_ADDR'], 86400); // 하루동안 저장
내용
}
}
답변 감사합니다.
근데 삭제를 해봤더니 오류가 나네요.
정말 죄송한데요.
아래 구문중에 어떻게 수정해야 하는지 알려주시면 은혜 잊지 않겠습니다.
// 컴퓨터의 아이피와 쿠키에 저장된 아이피가 다르다면 테이블에 반영함
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;
$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' ");
}
}
?>
근데 삭제를 해봤더니 오류가 나네요.
정말 죄송한데요.
아래 구문중에 어떻게 수정해야 하는지 알려주시면 은혜 잊지 않겠습니다.
// 컴퓨터의 아이피와 쿠키에 저장된 아이피가 다르다면 테이블에 반영함
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;
$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' ");
}
}
?>
이것만 넣으시면 오류가 안나실껀대
$tmp_row = sql_fetch(" select max(vi_id) as max_vi_id from $g4[visit_table] ");
$vi_id = $tmp_row[max_vi_id] + 1;
$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' ");
$tmp_row = sql_fetch(" select max(vi_id) as max_vi_id from $g4[visit_table] ");
$vi_id = $tmp_row[max_vi_id] + 1;
$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' ");
말씀해주신대로 했더니 에러는 안나는데요...
근데 카운터 변경이 똑같은데요?
원래 새로고침 한번 할때마다...혹은 브라우져를 새로 열때마다 카운터가 늘어나야 하는거 아닌가요?
근데 카운터 변경이 똑같은데요?
원래 새로고침 한번 할때마다...혹은 브라우져를 새로 열때마다 카운터가 늘어나야 하는거 아닌가요?
안녕하세요.. 제가 아는대로 설명해드릴께요 .
일단 오류 나는부분은 g4_visit 테이블 인덱스가(index1) vi_ip하고 vi_date가 UNIQUE설정이 되어있습니다.
간단히 중복 카운터를 올리고 싶으시면 이렇게 하세요.
1. g4_visit테이블에서 index1인덱스 설정을 UNIQUE에서 index형태로 바꿔주세요.
2. /bbs/visit_insert.inc.php 파일 여신후에
5번줄은 주석처리 하시구염( if (get_cookie('ck_visit_ip') != $_SERVER['REMOTE_ADDR']) )
이부분을 if(true) 무조건 참으로 만드세요.
- 끝 -
이렇게 하시면 중복카운팅이 됩니다. 그럼수겅하세요. ^^
일단 오류 나는부분은 g4_visit 테이블 인덱스가(index1) vi_ip하고 vi_date가 UNIQUE설정이 되어있습니다.
간단히 중복 카운터를 올리고 싶으시면 이렇게 하세요.
1. g4_visit테이블에서 index1인덱스 설정을 UNIQUE에서 index형태로 바꿔주세요.
2. /bbs/visit_insert.inc.php 파일 여신후에
5번줄은 주석처리 하시구염( if (get_cookie('ck_visit_ip') != $_SERVER['REMOTE_ADDR']) )
이부분을 if(true) 무조건 참으로 만드세요.
- 끝 -
이렇게 하시면 중복카운팅이 됩니다. 그럼수겅하세요. ^^
참 재밌다..
알려주신분은 성심을 다해 알려주고..
우리같은 초자는 차려준 밥도 못먹고...
ㅎㅎㅎ
난 여기서 도움 많이 받았는데..
제일 이해가 안갔던건...
머리빼고 꼬리빼고 몸통만 설명을 해줘서 정말 힘들었슴다
그래서 요즘 질문할땐..
구체적으로 어느폴더 어느파일 그리고 어느부분까지 알려줘야 수정할수가 있어요
알려주신분은 성심을 다해 알려주고..
우리같은 초자는 차려준 밥도 못먹고...
ㅎㅎㅎ
난 여기서 도움 많이 받았는데..
제일 이해가 안갔던건...
머리빼고 꼬리빼고 몸통만 설명을 해줘서 정말 힘들었슴다
그래서 요즘 질문할땐..
구체적으로 어느폴더 어느파일 그리고 어느부분까지 알려줘야 수정할수가 있어요
아 저도 테이블야자님 말에 100% 동감합니다.
몸통가지고 이해할려니 머리만 멍합니다. 발리 고수가 되던지 해야지 부러울 따름입니다.
몸통가지고 이해할려니 머리만 멍합니다. 발리 고수가 되던지 해야지 부러울 따름입니다.
넘버플러스님대로하면 잘되네요~ 감사