웹마스터 팁

안녕하세요?

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

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

^^

이번에는 카운터를 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]; ?> 등등 이라는 부분을 넣어서 방문자수와 페이지뷰를 출력하시면 됩니다.


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



휴~ 다 마쳤네요.

그럼 모두들 수고하세요.
제목 글쓴이 날짜
자신의 디비내용을 출력해주는 소스 [출처: phpschool.com] [5] 석이™ 2003.02.05
제로보드식 에러페이지 만들기 [2] .zeve 2003.02.04
야구 자료실 2 (목록 만들기) 한꼬마 2003.02.02
야구 자료실 만들기 1 [8] file 한꼬마 2003.01.30
PHP,자바스크립트 활용하기 #1 -무단링크라는 것은... [21] ☆좀비파우더™ 2003.01.30
^.^ 그림을 DB에 집어넣어 버리기.. [13] 아이쿠 2003.01.30
lotto 번호 추출기 [7] 갑빠™ 2003.01.29
제로보드 코멘트 수정 기능 구현!! [13] teslaMINT 2003.01.28
NZEO 쪽지 수신 허용/거부 따라하기 ~(=ㅁ=)~ [12] teslaMINT 2003.01.28
[제로카운터 수정하기#4-초보용] 인트로에서 카운트 체크하고 메인에서 카운트 보여주기 [3] 김태훈 2003.01.22
[제로카운터 수정하기#3-초보용] 어제 오늘 방문자수 변경하기 김태훈 2003.01.22
[제로카운터 수정하기#2-초보용] 새로 설치후 예전 방문자수로 고치기(최고방문자수 문제해결됨) 김태훈 2003.01.22
[제로카운터 수정하기#1-초보용] 테이블 다 지우고 새로 설치하기 [2] 김태훈 2003.01.22
엔지오 처럼 주소 /?channel=about 식으로 만들기 [18] 위니 2003.01.21
국내 IP 조회하는 클래스.(소켓사용) [1] 행복한고니 2003.01.17
텍스트 링크, 배너 링크*랜덤 (틀팁포함) [3] 둘리나라™ 2003.01.16
파일 하나로 끝내는-_- NZEO 북마크...-_-a [14] ineal 2003.01.13
웹 인증 보호, 윈도우 로그인 폼 이용 (authenticate) [9] file 둘리나라™ 2003.01.13
[동주아빠] PHP 게시판(끝.29강) - 삭제(delete_ok.php) [18] 손병목 2003.01.11
[동주아빠] PHP 게시판(28강) - 삭제(delete.php) 손병목 2003.01.11