페이지별 접속자수 관련하여.. 채택완료
https://sir.kr/g5_tip/4749">https://sir.kr/g5_tip/4749
위의 주소를 접속하시면 페이지별 접속자수를 아래 사진처럼 할 수 있는 스킨이 있습니다.
--------------------------------------------

--------------------------------------------
그런데 설치 후 테스트를 해보니 IP별 첫 접속페이지만 뜨는것 같습니다.
이것을 한 IP의 접속자가 들어갔던 모든 페이지가 통계에 나타나게 할 수 있을까요?
답변 7개
도움이 될려나 모르겠습니다.
링크하신 경로의 파일은 사용하시면 차후 필드값이 부족해 오류가 발생할 겁니다.
그래서 기존 기능에 조금 터치만 했습니다.
먼저 phpmyadmin으로 DB 열어서 g5_visit 의 구조를 보시면
'+인덱스' 보이실 겁니다. 그걸 열어 보시면 'Index1' 보이실 겁니다.
여기 수정 들어가셔서 'vi_ip'를 'vi_id'로 변경하세요.
그다음 /bbs/visit_insert.php 파일 열어 보시면 제일 아래 IF 문 닫는 부분 '}'이 보이실겁니다.
여기에 아래처럼 소스를 넣어 주세요.
별다른건 없이 방문자 카운트만 안되도록 한겁니다.
</p><p>}else{</p><p> // 방문자수 카운트 없이 접속페이지 기록
// 위쪽 소스에서 그대로 가져옴</p><p> set_cookie('ck_visit_ip', $_SERVER['REMOTE_ADDR'], 86400); // 하루동안 저장</p><p> $tmp_row = sql_fetch(" select max(vi_id) as max_vi_id from {$g5['visit_table']} ");
$vi_id = $tmp_row['max_vi_id'] + 1;</p><p> // $_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, 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}' ) ";</p><p> $result = sql_query($sql, FALSE);
}</p><p>
이렇게 하시고 저장을 하시면 사이트 어디를 돌아 당겨도 referer값이 저장이 될겁니다.
참고로 접속자검색 가셔서 ip 누르시면 해당 ip별로 검색된 접속정보를 보실수 있습니다.
고객 요청에 맞추다 보니 어쩔수 없는 거지만서도 일단 DB에는 좋지 않은 기능입니다.
클릭시마다 저장이 되니 데이터가 어마어마하게 쌓일겁니다.
관리자 메뉴의 '접속자로그삭제'로 주기적인 삭제가 필요하다고 고객에게 알려 주셔야 할겁니다.
아니면 특정 페이지만 insert 되도록 조건을 주는것도 방법일 겁니다.
참 약점이 하나 있네요. 마지막에 머물렀던 페이지는 저장이 안되요.
필요하시면 별도 필드 만들어 $_SERVER["REQUEST_URI"]로 넣으시면 됩니다.
답변에 대한 댓글 4개
휴대폰번호는 제 홈페이지에 있어요^^
내일부터이긴한데 오래쉬어 감이 떨어지네요
암튼 감사
댓글을 작성하려면 로그인이 필요합니다.
제가 뭘 빠트렸는지 이거 그대로예요 ㅠㅠ
localhost/c 에 설치해서 c를 도메인으로 인식하고 /c/adm 이라고 뜨나보네요.

답변에 대한 댓글 1개
님께서 올린 링크의 팁과 파일이 아닌
그누가 원래 가지고 있는 기능으로 작업한겁니다.
다른분꺼 소스 수정이 아니예요.
댓글을 작성하려면 로그인이 필요합니다.
테이블을 만들고 검색시에 속도 향상 또는 중복방지를 위한 방법으로 인덱스라는걸 지정합니다.

phpmyadmin 들어 가셔서 g5_visit 테이블의 구조 들어가시면 아래에 인덱스라고 있을겁니다.
님께서 쓰고 계신 phpmyadmin 버전이 높아 금색 열쇠가 vi_id에 되어 있을겁니다.
이것또한 primary 지정하면서 인덱스화 된겁니다.
아래 보시면 index1 이라는 인덱스 보이시나요...
vi_ip와 vi_date가 하나로 묶여 있는데요.
제가 일러드린 방법을 쓰실려면 위 인덱스의 vi_ip가 중복으로 인해 등록이 안됩니다.
그래서 해당 인덱스의 수정을 눌러 vi_ip를 vi_id로 변경을 하시면 된다는 겁니다.
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 2개
변경했습니다 ㅎ
잘 하셨습니다.
혹 안되시면 다시 질문을...
일단 저는 테스트 해보니 잘되기는 하는데...
별 필요없는 기능이라...
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 2개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인

내일부터네요 화이팅입니다!
승희아빠님은 회사 하나 차리셔야 될 실력이시네요 ㅎㅎ