주간 베스트 월간 베스트 3개월 베스트 베스트 게시물
꽃배달 한국, 중국 전지역배송

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

네로 | 2003.02.24 03:53:44 댓글: 0 조회: 412 추천: 11
분류웹 프로그래밍 https://life.moyiza.kr/itstudy/1758939
▶ 자신만의 카운터를 가져보자 (기초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)
* 이동한 이유 :
* 원래의 위치 : 웹 공부 >>
* 이동후 위치 : 웹 공부 >> 웹 프로그래밍
추천 (11) 선물 (0명)
IP: ♡.27.♡.234
3,006 개의 글이 있습니다.
제목 글쓴이 날짜 조회
관리자
2003-09-20
11967
관리자
2003-09-20
11522
관리자
2003-09-20
20665
지구인
2010-08-27
19450
지구인
2009-09-07
13769
SOLIDH
2010-01-29
15728
엔죠라이프
2004-10-07
16823
네로
2003-02-24
394
네로
2003-02-24
515
네로
2003-02-24
412
네로
2003-02-24
489
네로
2003-02-24
466
네로
2003-02-24
787
네로
2003-02-24
992
네로
2003-02-24
499
네로
2003-02-24
483
네로
2003-02-24
511
네로
2003-02-24
693
네로
2003-02-24
618
네로
2003-02-24
433
네로
2003-02-24
371
네로
2003-02-24
363
네로
2003-02-24
516
네로
2003-02-24
428
네로
2003-02-24
386
네로
2003-02-24
435
네로
2003-02-24
486
네로
2003-02-24
465
모이자 모바일