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

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

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

홈페이지에 카운터를 달아두면 방문한 사람들이 몇명인지 알 수 있습니다. 이런
카운터의 초기 형태는 해당 페이지가 열리면 무조건 1씩 증가하는 카운터였습니다.
이번에 간단한 형태의 카운터를 작성해보도록 하겠습니다.

※ 내용이 길다고 미리 겁먹지 마세요. ^^;


기초적인 형태의 카운터는 구현하기 무척 쉽습니다. 하지만 먼저 원리를 알아야겠죠?
처음 방문객이 접속하면 기존에 저장되어 있던 카운터 값을 읽어 여기에 1을 더한 후
이 새로운 값을 다시 저장한 다음 화면에 값을 출력하면 됩니다.

수치는 어디에 저장될까요? 그것은 지정하기 나름입니다. 파일을 이용하는 방법,
DB를 이용하는 방법이 있는데 여기에서는 파일을 이용한 프로그램을 작성하도록
하겠습니다. (처음 인삿말에서 밝혔듯 파일을 이용한 프로그램을 주로 작성할
것입니다. 파일 처리 부분만 변경하면 DB를 이용한 프로그램도 제작 가능하죠.)

먼저 수치를 파일에 저장해야 하기 때문에 미리 파일을 올려 읽고 쓰기가 가능하도록
퍼미션을 변경해두거나, 또는 카운터 프로그램이 있는 디렉토리의 퍼미션을 읽고
쓰기가 가능하도록 변경해 두어야 합니다. (잘 기억나지 않는다면 퍼미션 부분을
다시한번 읽어보도록 하세요.) 여기에서는 카운터 디렉토리를 하나 만들어 퍼미션을
777로 변경해 사용하는 방법을 택하겠습니다.

먼저 카운터 프로그램을 실행하면 기존 카운터 파일이 있는지 확인해봐야 합니다.

여기서 기존 파일이 있다면 해당 파일의 내용을 읽어들인 다음, 그 값에 1을 더한 후
다시 파일에 기록하고 카운터 값을 출력하면 됩니다.

기존 파일이 없다면 카운터값은 당연히 0이 되며, 이 값에 1을 더해 파일에 기록하고
수치를 출력하면 되는 것이죠.

순서를 보다 간략화하면 다음과 같이 됩니다.

1. 기존 카운터 파일의 존재 유무를 확인해 없을 경우 0값으로 파일을 만든다.
2. 파일을 읽어 기존 값에 1을 더한 다음 파일에 재기록한다.
3. 수치를 출력한다.

매우 간략화되었죠? 그럼 이것을 다시 하나씩 분리해볼까요?

1. 카운터 수치가 저장될 파일명을 지정한다.
2. 파일의 존재유무를 확인해 없을 경우 0값을 주어 파일을 만든다.
   (해당 파일의 권한을 777로 변경해두면 FTP로 접속했을때 본인이 제어 가능)
3. 파일을 읽어온다.
4. 해당 값에 1을 더한다.
5. 새로운 값을 파일에 기록한다.
6. 카운트 값을 출력한다.

간단하죠? ^^ 그럼 위 과정대로 프로그램을 작성해보겠습니다.


▷ 파일명 : count.php
================================================================================
<?
// 과정 1 : 카운터 수치가 저장될 파일명을 지정한다.
$count_file = "count.dat"; // 수치가 기록될 파일명

// 과정 2 : 파일의 존재유무를 확인해 없을 경우 0값을 주어 파일을 만든다.
if (!file_exists($count_file)) { // 만약 !(파일이 있으면) = 만약 (파일이 없으면)
  $makefile = fopen($count_file,"w"); // 해당 파일을 쓰기 모드로 오픈
  fwrite($makefile,0); // 숫자 0을 파일에 기록
  fclose($makefile); // 파일을 닫기
  chmod($count_file,0777); // 파일의 권한을 변경한다.
}

// 과정 3 : 파일을 읽어온다.
$readfile = fopen($count_file,"r"); // 파일을 읽기 모드로 오픈
$count = fread($readfile,filesize($count_file)); // 크기만큼 읽어들임
fclose($readfile); // 파일 닫기

// 과정 4 : 해당 값에 1을 더한다.
$count++; // 값 1 증가

// 과정 5 : 새로운 값을 파일에 기록한다.
$writefile = fopen($count_file,"w"); // 파일을 기록 모드로 오픈
fwrite($writefile,$count); // 카운트 값을 기록
fclose($writefile); // 파일 닫기

// 과정 6 : 카운트 값을 출력한다.
echo $count; // 카운트 출력
?>
================================================================================

어때요? 매우 간단하죠? 위에서 쓰인 함수들은 모두 PHP 입문 편에서 다루었던
내용들입니다. 잘 모르겠다면 다시 한번 살펴보면 좋겠죠?

먼저 자신의 계정에 count라는 디렉토리를 하나 생성합니다. 그 다음 해당
디렉토리의 퍼미션을 777로 변경해줍니다.

※ 대부분 FTP 프로그램을 이용해 접속합니다. 그런 경우 계정 측의 목록 상자에서
마우스 우측 버튼을 누르면 이용할 수 있는 명령이 나오는데, 이 중 디렉토리를
만드는 항목과 퍼미션을 변경하는 항목이 있습니다. 그리고 텔넷(또는 SSH) 접속시
쉘 상에서 직접 mkdir count / chmod 777 count 란 명령을 통해 위의 과정을
진행할 수 있습니다.
이 강의는 PHP 강의입니다. 프로그램의 사용에 대해서는 사용자 본인의 몫이겠죠?

그 다음 count 디렉토리에 위에서 만든 count.php 파일을 올려둡니다. 그리고
웹상에서 불러오면 숫자 1 이 출력될 것입니다. 만약 아래와 같은 메시지가
출력된다면, count 디렉토리의 퍼미션을 777로 하지 않아서입니다.

================================================================================
Warning: fopen("count.dat","w") - Permission denied
  in /public_html/count/count.php on line 7
Warning: Supplied argument is not a valid File-Handle resource
  in /public_html/count/count.php on line 8
:
Warning: Supplied argument is not a valid File-Handle resource
  in /public_html/count/count.php on line 23
Warning: Supplied argument is not a valid File-Handle resource
  in /public_html/count/count.php on line 24
================================================================================

새로고침을 눌러보면 수치가 계속 증가함을 눈으로 확인할 수 있을 것입니다. ^^;

그럼 일반 HTML 문서에 적용하는 방법을 알아볼까요?


먼저 기본적인 문서가 하나 있어야겠죠?

▷ 파일명 : index.html
================================================================================
<html>
<head>
<title>홍길동의 홈페이지</title>
</head>
<body bgcolor=white text=black>
<br>
<br>
안녕하세요? 홍길동의 홈페이지에 방문해주셔서 감사합니다.<br>
<br>
즐거운 시간 되세요~<br>
<br>
<br>
</body>
</html>
================================================================================

위 문서를 불러보면 다음과 같은 출력 결과가 나옵니다.

================================================================================
안녕하세요? 홍길동의 홈페이지에 방문해주셔서 감사합니다.

즐거운 시간 되세요~
================================================================================

허전하죠? 카운터가 표시되어야 하는데... 다음처럼 추가해봅시다.

▷ 파일명 : index.html
================================================================================
<html>
<head>
<title>홍길동의 홈페이지</title>
</head>
<body bgcolor=white text=black>
<br>
<br>
안녕하세요? 홍길동의 홈페이지에 방문해주셔서 감사합니다.<br>
<br>
즐거운 시간 되세요~<br>
<br>
<br>
제 홈페이지에 <? include "count.php"; ?>번째 방문객이십니다.
</body>
</html>
================================================================================

아래쪽에 "제 홈페이지에 <? include "count.php"; ?>번째 방문객이십니다." 부분이
새롭게 추가되었죠? 이 문서를 불렀을 경우 아래와 같은 화면이 출력되면 정상입니다.

================================================================================
안녕하세요? 홍길동의 홈페이지에 방문해주셔서 감사합니다.

즐거운 시간 되세요~


제 홈페이지에 12번째 방문객이십니다
================================================================================

만약 안된다면 웹서버에서 HTML 문서도 PHP로 인식하게끔 설정하지 않아서입니다.
그럴 경우 파일명을 index.html에서 index.php로 바꿔보도록 하세요. (이런 부분에
대해서는 미리 기초적인 지식이 있어야겠죠?)

카운터를 보다 예쁘게 꾸미려면 HTML 태그를 이용하면 됩니다.

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


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


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

* 전설님에 의해서 게시물 이동되었습니다 (2004-05-30 17:12)
* 이동한 이유 :
* 원래의 위치 : 웹 공부 >>
* 이동후 위치 : 웹 공부 >> 웹 프로그래밍
추천 (13) 선물 (0명)
IP: ♡.149.♡.65
3,006 개의 글이 있습니다.
제목 글쓴이 날짜 조회
관리자
2003-09-20
11989
관리자
2003-09-20
11536
관리자
2003-09-20
20689
지구인
2010-08-27
19471
지구인
2009-09-07
13789
SOLIDH
2010-01-29
15749
엔죠라이프
2004-10-07
16837
광수
2001-10-17
425
광수
2001-10-17
578
광수
2001-10-17
720
광수
2001-10-17
373
광수
2001-10-17
448
광수
2001-10-17
711
광수
2001-10-17
592
광수
2001-10-17
565
광수
2001-10-17
598
광수
2001-10-17
503
광수
2001-10-17
623
광수
2001-10-17
833
광수
2001-10-17
792
광수
2001-10-17
631
광수
2001-10-17
788
광수
2001-10-17
453
광수
2001-10-17
510
광수
2001-10-17
447
광수
2001-10-17
659
광수
2001-10-17
509
광수
2001-10-17
734
모이자 모바일