웹마스터 팁

안녕하세요?

제로카운터 수정하기 마지막입니다. 힘들군요. 글 올리는게 ^^

하지만 저같이 고생하는 초보자분들을 위해 제가 고생(?)하며 얻었던 걸 알려드립니다.

^^

이번에는 카운터를 include 시키는 부분과 카운터를 보여주는 부분이 틀릴 경우를 말씀드리겠습니다.

즉 홈페이지의 최초페이지인 인트로 부분에서 카운트를 하고

그 다음페이지인 메인페이지에서 방문자수와 페이지뷰를 보여줄 때를 말하는 겁니다.

물론 메인페이지에서 카운터를 include하고 방문자수와 페이지뷰를 보여줄 수도 있습니다.

잘 됩니다.

하지만 단점이 있다면 바로 방문경로에 문제가 생긴다는 겁니다.

즉 메인페이지 바로 직전의 페이지가 인트로 페이지가 되니까요.

그래서 검색엔진 등을 통해서 홈페이지에 들어오더라도 방문경로는 항상 동일하게 나오게 됩니다.

Typing or Bookmark Moving On This Site



그럼 머리쓰지 말고 인트로페이지에다가 카운터를 include하고 방문자수를 보여주면 되지 않냐? 하고 생각하시겠죠?

당연히 가능합니다만 불가능할 경우도 있습니다.

저같은 경우 인트로를 배경색을 검정으로, 플래쉬 파일을 넣었습니다.

그렇게 하고 보니 방문자수를 보여줄 자리가 없더군요.

그래서 곰곰히 생각해보았습니다.



해답은 역시나 zerocounter.php3에 있습니다.

즉 인트로 페이지에서 include시킬 때 방문자수와 페이지뷰를 카운트하게 합니다.

메인페이지에서 또 include시킬 때는 방문자수와 페이지뷰를 카운트 하는 부분은 제외하고 순수한 출격부분만 삽입하게 됩니다.



저같은 경우는 zerocounter.php3 라는 파일을 두개의 파일로 나누었습니다.
zerocounter.php3라는 것과 display.php3 라는 파일로 말입니다.




우선 수정된 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);
   }

?>

-------------------------------------------------------------------------------------------------------

보시면 아시겠지만 원래 zerocounter.php3에서 삭제된 부분은 카운터값 읽어오는 부분입니다. 이 부분만 삭제를 했습니다.






다음에는 display.php3 내용입니다.

-------------------------------------------------------------------------------------------------------

<?

  // 오늘의 날자 구함
  $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();

//------------------- 카운터 값 읽어오는 부분 ----------------------------------------------------------------------
  // 전체
  $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];

?>



---------------------------------------------------------------------------------------------------



이렇게 두개의 파일을 만드신후 ftp로 업로드 합니다.

물론 원래의 zerocounter.php3가 있는 폴더 즉 설치폴더 입니다.


그럼 이제 include하실 때 이렇게 하시면 됩니다.

인트로 페이지 : <? include "zerocounter/dbconn.php3"; include "zerocounter/zerocounter.php3"; ?>
메인    페이지 : <? include "zerocounter/dbconn.php3"; include "zerocounter/display.php3"; ?>

그리고 메인페이지에 <? echo $count[yesterday_hit]; ?> 등등 이라는 부분을 넣어서 방문자수와 페이지뷰를 출력하시면 됩니다.


이렇게 하시면 방문경로도 잘 나오고 방문자수가 두번 체크되지도 않고 좋습니다.



휴~ 다 마쳤네요.

그럼 모두들 수고하세요.
제목 글쓴이 날짜
기초 통계 프로그램 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