주간 베스트 월간 베스트 3개월 베스트 베스트 게시물
연길시 신화서점 조선말 도서

자신만의 카운터를 가져보자 (기초3)

광수 | 2001.10.17 00:29:39 댓글: 0 조회: 503 추천: 12
분류웹 프로그래밍 https://life.moyiza.kr/itstudy/1758812
▶ 자신만의 카운터를 가져보자 (기초3)


이번에는 보다 발전된 형태의 카운터를 만들어볼까요? 바로 전체와 오늘이 표시되는
카운터죠. 전편에서 다룬 카운터에 저장되는 값만 몇개 더 추가하면 되겠죠?

먼저 이전 순서를 불러와볼까요?

1. 카운터 수치가 저장될 파일명을 지정한다.
2. 파일의 존재유무를 확인해 없을 경우 0:0값을 주어 파일을 만든다.
   (해당 파일의 권한을 777로 변경해두면 FTP로 접속했을때 본인이 제어 가능)
3. 파일을 읽어온다.
4. 해당 값을 : 단위로 하나는 IP, 하나는 카운터 값으로 분리한다.
5. 위의 IP 값과 현재 접속한 사람의 IP 값이 다를 경우 카운트 값을 1 더함
6. 새로운 값을 파일에 기록한다. (5번에서 변수를 하나 더 두면 구분 가능)
7. 카운트 값을 출력한다.

이 순서에 추가해야 할 항목을 생각해볼까요? 먼저 해당 파일에 기록되는 내용은
전체:오늘:IP:날짜 정도로 구성하면 되겠군요. 그 다음 파일을 읽어온 다음 이들을
각각의 변수로 나눈 다음 날짜와 카운트 비교를 해야겠죠?

오늘 날짜와 기록된 날짜를 비교해 같을 경우와 다를 경우로 구분지어 진행하면
되겠네요. 날짜가 같을 경우엔 IP를 비교해 다를 경우 전체와 오늘 카운트 값을
1씩 증가시키면 되고, 날짜가 다를 경우엔 전체 카운트는 1 증가, 오늘 카운트는
1로 초기화하면 되겠구요.

그 다음 변경된 사항이 있을 경우만 파일 기록을 하면 되겠군요. ^^; 간단하죠?

새로운 순서대로 프로그램을 작성해볼까요?


▷ 파일명 : count.php
================================================================================
<?
$count_file = "count.dat"; // 데이터가 기록될 파일
$mmdd = date("m-d"); // 오늘 월-일 구함

if (!file_exists($count_file)) { // 데이터 파일이 없을 경우
  $makefile = fopen($count_file,"w"); // 데이터 파일 쓰기 모드 오픈
  fwrite($makefile,"0:0:0:0"); // 0:0:0:0 값을 파일에 기록
  fclose($makefile); // 파일 닫기
  chmod($count_file,0777); // 퍼미션 변경
}

$readfile = fopen($count_file,"r"); // 데이터 파일 읽기 모드 오픈
$read = fread($readfile,filesize($count_file)); // 크기만큼 읽음
fclose($readfile); // 파일 닫기
list($total, $today, $ip, $date) = explode(":",$read); // 각각의 변수로 분리

if ($mmdd==$date) { // 오늘 날짜와 기록된 날짜가 같을 경우
  if ($REMOTE_ADDR!=$ip) { // 현재 IP와 기록된 IP가 다를 경우
    $total++; // 전체 1 증가
    $today++; // 오늘 1 증가
    $check=1; // 체크 변수
  }
} else { // 오늘 날짜와 기록된 날짜가 다를 경우
  $total++; // 전체 1 증가
  $today=1; // 오늘 1로 초기화
  $check=1; // 체크 변수
}

if ($check) { // 변경된 사항이 있을 경우
  $writefile = fopen($count_file,"w"); // 파일 쓰기 모드 오픈
  fwrite($writefile,"$total:$today:$REMOTE_ADDR:$mmdd"); // 기록
  fclose($writefile); // 파일 닫기
}
?>
================================================================================

새롭게 추가된 부분이 있죠? 바로 date() 함수입니다. 괄호 안에 형식을 지정해주면
해당 형식대로 값이 출력됩니다. 위에서 m-d라고 했는데 m은 월, d는 일을 뜻합니다.
"m-d"라고 했으니 오늘에 해당하는 월-일 값을 반환해줍니다. 이 값을 이용하는 것
외엔 기존의 방법과 동일합니다. (date 함수는 함수에 따로 올려두도록 하겠습니다.)

이번에는 각 값들을 출력하는 문장이 빠졌죠? 이 값들은 index.html에서 원하는
형태로 마음껏 출력하기 위해 비워두었습니다. 그럼 index.html에 해당 카운터 값을
출력하도록 해볼까요?


▷ 파일명 : index.html
================================================================================
<? include "count.php"; ?>
<html>
<head>
<title>홍길동의 홈페이지</title>
<style>
body,th,td { font-size:9pt; }
</style>
</head>
<body bgcolor=white text=black>
<br>
<br>
안녕하세요? 홍길동의 홈페이지에 방문해주셔서 감사합니다.<br>
<br>
즐거운 시간 되세요~<br>
<br>
<br>
<table border=0 cellpadding=0 cellspacing=1 bgcolor=black>
  <tr>
    <td>
<table border=0 cellpadding=2 cellspacing=0>
  <tr>
    <th bgcolor=#cccccc align=center colspan=2>Counter</th>
  </tr>
  <tr>
    <td bgcolor=#eeeeee align=right>전체 : </td>
    <td bgcolor=#eeeeee> <? echo $total; ?></td>
  </tr>
  <tr>
    <td bgcolor=#eeeeee align=right>오늘 : </td>
    <td bgcolor=#eeeeee> <? echo $today; ?></td>
  </tr>
</table>
    </td>
  </tr>
</table>
</body>
</html>
================================================================================

먼저 제일 처음 count.php 파일을 include 시킵니다. 그럼 실행된 다음 변수에 해당
값들이 불려져 있는 상태가 됩니다. 이 상태에서 본문 중에 필요한 곳에 다음과 같은
명령을 통해 변수의 값을 출력시키는 것이죠.

<? echo $변수명; ?>

보다 멋지게 꾸미려면 HTML에 대해 많이 알아야겠죠? (스타일 적용하면 예뻐진답니다)

그럼 다음 강의에서 뵙도록 하겠습니다. 꾸벅...


▷ 미리보기 : http://dreamphp.com/study2/count3/count.php
▷ 소스보기 : http://dreamphp.com/study2/count3/count.phps
▷ 예제문서 : http://dreamphp.com/study2/count3/index.html
       : http://dreamphp.com/study2/count3 (기본 문서 파일명 생략 가능)

* 전설님에 의해서 게시물 이동되었습니다 (2004-05-30 17:07)
* 이동한 이유 :
* 원래의 위치 : 웹 공부 >> 웹 프로그래밍
* 이동후 위치 : 웹 공부 >>

* 전설님에 의해서 게시물 이동되었습니다 (2004-05-30 17:12)
* 이동한 이유 :
* 원래의 위치 : 웹 공부 >>
* 이동후 위치 : 웹 공부 >> 웹 프로그래밍
추천 (12) 선물 (0명)
IP: ♡.149.♡.65
3,006 개의 글이 있습니다.
제목 글쓴이 날짜 조회
관리자
2003-09-20
11866
관리자
2003-09-20
11414
관리자
2003-09-20
20548
지구인
2010-08-27
19343
지구인
2009-09-07
13664
SOLIDH
2010-01-29
15622
엔죠라이프
2004-10-07
16718
광수
2001-10-17
424
광수
2001-10-17
575
광수
2001-10-17
719
광수
2001-10-17
372
광수
2001-10-17
445
광수
2001-10-17
709
광수
2001-10-17
591
광수
2001-10-17
565
광수
2001-10-17
597
광수
2001-10-17
503
광수
2001-10-17
622
광수
2001-10-17
832
광수
2001-10-17
792
광수
2001-10-17
628
광수
2001-10-17
786
광수
2001-10-17
450
광수
2001-10-17
508
광수
2001-10-17
445
광수
2001-10-17
656
광수
2001-10-17
508
광수
2001-10-17
732
모이자 모바일