웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
[제로카운터 수정하기#3-초보용] 어제 오늘 방문자수 변경하기
2003.01.22 20:14
먼저 어제 것을 고쳐보겠습니다. 오늘 것도 어제 것과 별반 차이없습니다.
우선 제로카운터 폴더에 있는 zerocounter.php3를 여시기 바랍니다.
아래는 전체 내용입니다.
<?
// 사용자 IP 얻어옴
$user_ip=$REMOTE_ADDR;
$referer=$HTTP_REFERER;
if(!$referer) $referer="Typing or Bookmark Moving On This Site";
// 오늘의 날자 구함
$today=mktime(0,0,0,date("m"),date("d"),date("Y"));
$yesterday=mktime(0,0,0,date("m"),date("d"),date("Y"))-60*60*24;
$tomorrow=mktime(23,59,59,date("m"),date("d"),date("Y"));
$time=time();
//------------------- 카운터 테이블에 데이타 입력 부분 -------------------------------------------------------
// counter_main에서 오늘날짜 행이 없으면 추가.
$check=mysql_fetch_array(mysql_query("select count(*) from counter_main where date='$today'",$connect));
if(!$check[0])
{
mysql_query("insert into counter_main (date, unique_counter, pageview) values ('$today', '0', '0')", $connect);
}
// 지금 아이피로 접속한 사람이 오늘 처음 온 사람인지 검사
$check=mysql_fetch_array(mysql_query("select count(*) from counter_ip where date>=$today and date<$tomorrow and ip='$user_ip'",$connect));
// 오늘 처음왔을때
if($check[0]==0)
{
// 전체랑 오늘 카운터 올림
mysql_query("update counter_main set unique_counter=unique_counter+1, pageview=pageview+1 where no=1 or date='$today'", $connect);
// 오늘 시간대별 ip 입력
mysql_query("insert into counter_ip (date, ip) values ('$time','$user_ip')",$connect);
}
// 오늘 한번 이상 온 상태일때
else
{
// 페이지뷰 올림
mysql_query("update counter_main set pageview=pageview+1 where no=1 or date='$today'", $connect);
}
// referer 값 저장
$check2=mysql_fetch_array(mysql_query("select count(*) from counter_referer where date=$today and referer='$referer'",$connect));
if($check2[0]==0)
{
mysql_query("insert into counter_referer (date, referer, hit) values ('$today','$referer','1')", $connect);
}
else
{
mysql_query("update counter_referer set hit=hit+1 where date=$today and referer='$referer'", $connect);
}
//------------------- 카운터 값 읽어오는 부분 ----------------------------------------------------------------------
// 전체
$total=mysql_fetch_array(mysql_query("select unique_counter, pageview from counter_main where no=1", $connect));
$count[total_hit]=$total[0];
$count[total_view]=$total[1];
// 오늘 카운터 읽어오는 부분
$detail=mysql_fetch_Array(mysql_query("select unique_counter, pageview from counter_main where date='$today'", $connect));
$count[today_hit]=$detail[0];
$count[today_view]=$detail[1];
// 어제 카운터 읽어오는 부분
$detail=mysql_fetch_Array(mysql_query("select unique_counter, pageview from counter_main where date='$yesterday'", $connect));
$count[yesterday_hit]=$detail[0];
$count[yesterday_view]=$detail[1];
// 최고 카운터 읽어오는 부분
$detail=mysql_fetch_Array(mysql_query("select max(unique_counter), max(pageview) from counter_main where no>1", $connect));
$count[max_hit]=$detail[0];
$count[max_view]=$detail[1];
// 최저 카운터 읽어오는 부분
$detail=mysql_fetch_Array(mysql_query("select min(unique_counter), min(pageview) from counter_main where no>1 and date<$today", $connect));
$count[min_hit]=$detail[0];
$count[min_view]=$detail[1];
?>
이렇게 길게 나와있습니다. 자 그럼 어제 방문자수와 페이지뷰를 고쳐봅시다.
처음 고칠 부분은 바로 다음 부분입니다.
// 오늘의 날자 구함
$today=mktime(0,0,0,date("m"),date("d"),date("Y"));
$yesterday=mktime(0,0,0,date("m"),date("d"),date("Y"))-60*60*24;
$tomorrow=mktime(23,59,59,date("m"),date("d"),date("Y"));
$time=time();
잘 보시면 $today와 $yesterday의 차이는 끝부분에 있습니다 "-60*60*24"
아마도 60초 x 60분(1시간) x 24시간(하루) 라는 식으로 초단위로 계산하는 것 같습니다.
투데이와 예스터데이를 다음과 같이 바꿔줍니다.
$today=mktime(0,0,0,date("m"),date("d"),date("Y"))-60*60*24;
$yesterday=mktime(0,0,0,date("m"),date("d"),date("Y"))-60*60*24*2;
이렇게 되면 실제적으로 $today에는 어제날짜가, $yesterday에는 그저께 날짜가 들어갑니다.
만약 오늘 방문자수와 페이지뷰를 수정하신다면 위의 단계는 필요없습니다.
그 다음은 아래의 부분을 수정하셔야 됩니다.
// 전체랑 오늘 카운터 올림
mysql_query("update counter_main set unique_counter=unique_counter+1, pageview=pageview+1 where no=1 or date='$today'", $connect);
여기서 아래의 +1 대신에 기본적으로 방문하는 방문자수와 페이지뷰 수치를 넣어주세요.
unique_counter=unique_counter+1
pageview=pageview+1
만약 어제 방문자수가 68명이었고 페이지뷰는 대략 92였다면
unique_counter=unique_counter+68
pageview=pageview+92
이렇게 수정해주시면 됩니다.
또한 만약 고정IP를 쓰시는 분이시라면 IP를 체크하는 루틴을 삭제를 해주셔야 됩니다.
즉 아래의 부분을
--------------------------------------------------------------------------------------------------
// 지금 아이피로 접속한 사람이 오늘 처음 온 사람인지 검사
$check=mysql_fetch_array(mysql_query("select count(*) from counter_ip where date>=$today and date<$tomorrow and ip='$user_ip'",$connect));
// 오늘 처음왔을때
if($check[0]==0)
{
// 전체랑 오늘 카운터 올림
mysql_query("update counter_main set unique_counter=unique_counter+1, pageview=pageview+1 where no=1 or date='$today'", $connect);
// 오늘 시간대별 ip 입력
mysql_query("insert into counter_ip (date, ip) values ('$time','$user_ip')",$connect);
}
// 오늘 한번 이상 온 상태일때
else
{
// 페이지뷰 올림
mysql_query("update counter_main set pageview=pageview+1 where no=1 or date='$today'", $connect);
}
밑에 있는 것과 같이 수정하시면 됩니다.
------------------------------------------------------------------------------------------------------
// 전체랑 오늘 카운터 올림
mysql_query("update counter_main set unique_counter=unique_counter+68, pageview=pageview+92 where no=1 or date='$today'", $connect);
// 오늘 시간대별 ip 입력
mysql_query("insert into counter_ip (date, ip) values ('$time','$user_ip')",$connect);
위와 같이 수정하시면(if else구문에서 if의 긍정부분만 남기는 겁니다) IP 체크를 안하게 됩니다.
전체적으로 이렇게 수정하신후 이 파일을 저장하세요.
그런후 ftp로 물론 업로드 하시구요.
그 다음에 include 문을 이용해서 카운터가 삽입되는 페이지에 가서 "새로고침" 버튼을 한번만 눌러주세요. 만약 두번 눌러주시면 원하는 방문자수의 2배가 됩니다.
분명 어제 "0/0" -> "68/92"로 바뀌어 있는 걸 보실겁니다.
만약 오늘 것을 고치신다면
// 오늘의 날자 구함
$today=mktime(0,0,0,date("m"),date("d"),date("Y"));
$yesterday=mktime(0,0,0,date("m"),date("d"),date("Y"))-60*60*24;
$tomorrow=mktime(23,59,59,date("m"),date("d"),date("Y"));
$time=time();
아까 "어제"꺼 고칠때 고쳤던 윗 부분은 그냥 두시면 됩니다.
단지 아래와 같이 더해지는 숫자를 '1'에서 원하시는 방문자수와 페이지뷰로 바꾸시면 됩니다. 아래에는 방문자수 '68'과 페이지뷰 '92'를 가정해서 고쳐본 것입니다.
// 전체랑 오늘 카운터 올림
mysql_query("update counter_main set unique_counter=unique_counter+68, pageview=pageview+92 where no=1 or date='$today'", $connect);
// 오늘 시간대별 ip 입력
mysql_query("insert into counter_ip (date, ip) values ('$time','$user_ip')",$connect);
즉, "어제"나 "오늘" 수정할때의 차이는 바로
// 오늘의 날자 구함
$today=mktime(0,0,0,date("m"),date("d"),date("Y"));
$yesterday=mktime(0,0,0,date("m"),date("d"),date("Y"))-60*60*24;
$tomorrow=mktime(23,59,59,date("m"),date("d"),date("Y"));
$time=time();
위의 날짜 구하는 부분이 틀립니다.
이렇게 하시면 쉽게 어제, 오늘의 방문자수와 페이지뷰를 수정하실 수 있습니다.
하지만 일부러 방문자수와 페이지뷰를 무작정 높게 고칠필요는 없다고 봅니다.
단지 새로 카운터를 설치할 경우 도움을 드리고자 적어봤습니다.
######################################################################################################
그리고 다 수정하신 후 zerocounter.php3 파일은 원래대로 바꿔놓으셔야 합니다.
안그러면 1명 접속할 때마다 68씩 방문자수가 증가하니까요. ^^
######################################################################################################
우선 제로카운터 폴더에 있는 zerocounter.php3를 여시기 바랍니다.
아래는 전체 내용입니다.
<?
// 사용자 IP 얻어옴
$user_ip=$REMOTE_ADDR;
$referer=$HTTP_REFERER;
if(!$referer) $referer="Typing or Bookmark Moving On This Site";
// 오늘의 날자 구함
$today=mktime(0,0,0,date("m"),date("d"),date("Y"));
$yesterday=mktime(0,0,0,date("m"),date("d"),date("Y"))-60*60*24;
$tomorrow=mktime(23,59,59,date("m"),date("d"),date("Y"));
$time=time();
//------------------- 카운터 테이블에 데이타 입력 부분 -------------------------------------------------------
// counter_main에서 오늘날짜 행이 없으면 추가.
$check=mysql_fetch_array(mysql_query("select count(*) from counter_main where date='$today'",$connect));
if(!$check[0])
{
mysql_query("insert into counter_main (date, unique_counter, pageview) values ('$today', '0', '0')", $connect);
}
// 지금 아이피로 접속한 사람이 오늘 처음 온 사람인지 검사
$check=mysql_fetch_array(mysql_query("select count(*) from counter_ip where date>=$today and date<$tomorrow and ip='$user_ip'",$connect));
// 오늘 처음왔을때
if($check[0]==0)
{
// 전체랑 오늘 카운터 올림
mysql_query("update counter_main set unique_counter=unique_counter+1, pageview=pageview+1 where no=1 or date='$today'", $connect);
// 오늘 시간대별 ip 입력
mysql_query("insert into counter_ip (date, ip) values ('$time','$user_ip')",$connect);
}
// 오늘 한번 이상 온 상태일때
else
{
// 페이지뷰 올림
mysql_query("update counter_main set pageview=pageview+1 where no=1 or date='$today'", $connect);
}
// referer 값 저장
$check2=mysql_fetch_array(mysql_query("select count(*) from counter_referer where date=$today and referer='$referer'",$connect));
if($check2[0]==0)
{
mysql_query("insert into counter_referer (date, referer, hit) values ('$today','$referer','1')", $connect);
}
else
{
mysql_query("update counter_referer set hit=hit+1 where date=$today and referer='$referer'", $connect);
}
//------------------- 카운터 값 읽어오는 부분 ----------------------------------------------------------------------
// 전체
$total=mysql_fetch_array(mysql_query("select unique_counter, pageview from counter_main where no=1", $connect));
$count[total_hit]=$total[0];
$count[total_view]=$total[1];
// 오늘 카운터 읽어오는 부분
$detail=mysql_fetch_Array(mysql_query("select unique_counter, pageview from counter_main where date='$today'", $connect));
$count[today_hit]=$detail[0];
$count[today_view]=$detail[1];
// 어제 카운터 읽어오는 부분
$detail=mysql_fetch_Array(mysql_query("select unique_counter, pageview from counter_main where date='$yesterday'", $connect));
$count[yesterday_hit]=$detail[0];
$count[yesterday_view]=$detail[1];
// 최고 카운터 읽어오는 부분
$detail=mysql_fetch_Array(mysql_query("select max(unique_counter), max(pageview) from counter_main where no>1", $connect));
$count[max_hit]=$detail[0];
$count[max_view]=$detail[1];
// 최저 카운터 읽어오는 부분
$detail=mysql_fetch_Array(mysql_query("select min(unique_counter), min(pageview) from counter_main where no>1 and date<$today", $connect));
$count[min_hit]=$detail[0];
$count[min_view]=$detail[1];
?>
이렇게 길게 나와있습니다. 자 그럼 어제 방문자수와 페이지뷰를 고쳐봅시다.
처음 고칠 부분은 바로 다음 부분입니다.
// 오늘의 날자 구함
$today=mktime(0,0,0,date("m"),date("d"),date("Y"));
$yesterday=mktime(0,0,0,date("m"),date("d"),date("Y"))-60*60*24;
$tomorrow=mktime(23,59,59,date("m"),date("d"),date("Y"));
$time=time();
잘 보시면 $today와 $yesterday의 차이는 끝부분에 있습니다 "-60*60*24"
아마도 60초 x 60분(1시간) x 24시간(하루) 라는 식으로 초단위로 계산하는 것 같습니다.
투데이와 예스터데이를 다음과 같이 바꿔줍니다.
$today=mktime(0,0,0,date("m"),date("d"),date("Y"))-60*60*24;
$yesterday=mktime(0,0,0,date("m"),date("d"),date("Y"))-60*60*24*2;
이렇게 되면 실제적으로 $today에는 어제날짜가, $yesterday에는 그저께 날짜가 들어갑니다.
만약 오늘 방문자수와 페이지뷰를 수정하신다면 위의 단계는 필요없습니다.
그 다음은 아래의 부분을 수정하셔야 됩니다.
// 전체랑 오늘 카운터 올림
mysql_query("update counter_main set unique_counter=unique_counter+1, pageview=pageview+1 where no=1 or date='$today'", $connect);
여기서 아래의 +1 대신에 기본적으로 방문하는 방문자수와 페이지뷰 수치를 넣어주세요.
unique_counter=unique_counter+1
pageview=pageview+1
만약 어제 방문자수가 68명이었고 페이지뷰는 대략 92였다면
unique_counter=unique_counter+68
pageview=pageview+92
이렇게 수정해주시면 됩니다.
또한 만약 고정IP를 쓰시는 분이시라면 IP를 체크하는 루틴을 삭제를 해주셔야 됩니다.
즉 아래의 부분을
--------------------------------------------------------------------------------------------------
// 지금 아이피로 접속한 사람이 오늘 처음 온 사람인지 검사
$check=mysql_fetch_array(mysql_query("select count(*) from counter_ip where date>=$today and date<$tomorrow and ip='$user_ip'",$connect));
// 오늘 처음왔을때
if($check[0]==0)
{
// 전체랑 오늘 카운터 올림
mysql_query("update counter_main set unique_counter=unique_counter+1, pageview=pageview+1 where no=1 or date='$today'", $connect);
// 오늘 시간대별 ip 입력
mysql_query("insert into counter_ip (date, ip) values ('$time','$user_ip')",$connect);
}
// 오늘 한번 이상 온 상태일때
else
{
// 페이지뷰 올림
mysql_query("update counter_main set pageview=pageview+1 where no=1 or date='$today'", $connect);
}
밑에 있는 것과 같이 수정하시면 됩니다.
------------------------------------------------------------------------------------------------------
// 전체랑 오늘 카운터 올림
mysql_query("update counter_main set unique_counter=unique_counter+68, pageview=pageview+92 where no=1 or date='$today'", $connect);
// 오늘 시간대별 ip 입력
mysql_query("insert into counter_ip (date, ip) values ('$time','$user_ip')",$connect);
위와 같이 수정하시면(if else구문에서 if의 긍정부분만 남기는 겁니다) IP 체크를 안하게 됩니다.
전체적으로 이렇게 수정하신후 이 파일을 저장하세요.
그런후 ftp로 물론 업로드 하시구요.
그 다음에 include 문을 이용해서 카운터가 삽입되는 페이지에 가서 "새로고침" 버튼을 한번만 눌러주세요. 만약 두번 눌러주시면 원하는 방문자수의 2배가 됩니다.
분명 어제 "0/0" -> "68/92"로 바뀌어 있는 걸 보실겁니다.
만약 오늘 것을 고치신다면
// 오늘의 날자 구함
$today=mktime(0,0,0,date("m"),date("d"),date("Y"));
$yesterday=mktime(0,0,0,date("m"),date("d"),date("Y"))-60*60*24;
$tomorrow=mktime(23,59,59,date("m"),date("d"),date("Y"));
$time=time();
아까 "어제"꺼 고칠때 고쳤던 윗 부분은 그냥 두시면 됩니다.
단지 아래와 같이 더해지는 숫자를 '1'에서 원하시는 방문자수와 페이지뷰로 바꾸시면 됩니다. 아래에는 방문자수 '68'과 페이지뷰 '92'를 가정해서 고쳐본 것입니다.
// 전체랑 오늘 카운터 올림
mysql_query("update counter_main set unique_counter=unique_counter+68, pageview=pageview+92 where no=1 or date='$today'", $connect);
// 오늘 시간대별 ip 입력
mysql_query("insert into counter_ip (date, ip) values ('$time','$user_ip')",$connect);
즉, "어제"나 "오늘" 수정할때의 차이는 바로
// 오늘의 날자 구함
$today=mktime(0,0,0,date("m"),date("d"),date("Y"));
$yesterday=mktime(0,0,0,date("m"),date("d"),date("Y"))-60*60*24;
$tomorrow=mktime(23,59,59,date("m"),date("d"),date("Y"));
$time=time();
위의 날짜 구하는 부분이 틀립니다.
이렇게 하시면 쉽게 어제, 오늘의 방문자수와 페이지뷰를 수정하실 수 있습니다.
하지만 일부러 방문자수와 페이지뷰를 무작정 높게 고칠필요는 없다고 봅니다.
단지 새로 카운터를 설치할 경우 도움을 드리고자 적어봤습니다.
######################################################################################################
그리고 다 수정하신 후 zerocounter.php3 파일은 원래대로 바꿔놓으셔야 합니다.
안그러면 1명 접속할 때마다 68씩 방문자수가 증가하니까요. ^^
######################################################################################################