웹마스터 팁

먼저 어제 것을 고쳐보겠습니다. 오늘 것도 어제 것과 별반 차이없습니다.

우선 제로카운터 폴더에 있는 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씩 방문자수가 증가하니까요. ^^

######################################################################################################
제목 글쓴이 날짜
기초 통계 프로그램 for 귀차니스트;; [3] TheMics 2002.08.10
Print 이건또 뭐지? 사이트 찾다보니 있던데..^^ [13] ZipShin 2002.08.16
제로 카운터 숫자 조정하기 [8] 이주경 2002.08.21
누구나 만들수있는 게시판 [schema, write, write_ok] [10] Mr. JH 2002.08.21
누구나 만들수있는 게시판 [글목록 list.php 부분] [6] Mr. JH 2002.08.21
누구나 만들수있는 게시판 [글보기 view.php 부분] [1] Mr. JH 2002.08.21
누구나 만들수있는 게시판 [글삭제, 수정 부분] [4] file Mr. JH 2002.08.21
테이블 생성시 데이터베이스의 타입설정 [2] Mr. JH 2002.08.22
꼭 알아야 하는 4가지 쿼리문 Mr. JH 2002.08.22
PHP에서 사용하는 간단하지만 중요한 MySQL함수들 [3] Mr. JH 2002.08.22
PHP 시간관련 함수 [3] Mr. JH 2002.08.22
PHP의 제어구조 [2] Mr. JH 2002.08.22
파일하나로 만드는 한줄 메모장(테마기능 포함) [8] Mr. JH 2002.08.22
[허접] rand() 함수를 이용한 뒤죽박죽 날짜 출력 [5] Myzzix 2002.08.23
[허접] implode() 함수로 배열을 변수로! Myzzix 2002.08.23
sleep() 제대루 쓰기... 요것두 [별루 알아도 도움 안되는 팁] [5] sMokaHallo 2002.08.24
변수를 사용하여 echo로 변수값 출력하기. [7] ZipShin 2002.08.28
array_multisort를 이용한 간단한 순위체크 [4] Doogi 2002.08.28
초보의 php를 활용한 OneFrame(NoFrame) 홈페이지 만들기 - 1 [17] 아이쿠 2002.08.30
초보의 php를 활용한 OneFrame(NoFrame) 홈페이지 만들기 - 2 [11] 아이쿠 2002.08.30