웹마스터 팁

이번 시간부터 PHP를 이용한 본격적인 프로그래밍에 들어갑니다.
오늘은 그 첫 시간으로 간단한 카운터를 하나 만들어 봅니다.
그리고 다음 시간부터는 게시판 만들기 프로젝트에 본격 돌입하겠습니다.

이번 시간에 만들어 볼 카운터는 제목 그대로 매우 간단한 방식으로 구현되는 카운터입니다.
단순히 파일을 액세스할 때마다 숫자를 하나씩 증가시켜 주는 것입니다.

1. 먼저 counter.txt 라는 파일을 하나 만들어야 됩니다.
그냥 쉽게 메모장에서 숫자 0이라는 데이터만 입력하고 counter.txt로 저장하면 됩니다. (물론 어느 폴더에다 저장해야 되는지는 알고 계시죠? APM_setup 아래의 htdocs 폴더에 저장하시면 됩니다.)

2. 이제 PHP 파일을 만들어야죠. 다음과 같은 내용으로 파일을 만들어 counter.php 라는 이름으로 저장합니다.

1: <?
2: $read = file("counter.txt");
3: $count = trim($read[0]);
4: $sum_count = $count + 1;
5:
6: $fp = fopen("counter.txt", "w");
7: fwrite($fp, $sum_count);
8: fclose($fp);
9:
10:echo "당신은 $sum_count 번째 방문자입니다.";
11:
12:?>

3. 자, 이제 실행해 볼까요?
http://localhost/counter.php 라고 입력해 보세요. 제대로 실행됩니까?
http://127.0.0.1/counter.php 라고 입력해도 됩니다. 127.0.0.1이 바로 localhost를 뜻하니까요.
만약 회사에서와 같이 자신의 PC가 고정 IP인 분은 localhost 대신 해당 IP를 직접 입력하셔도 됩니다. (그럴려면 먼저 APM_Setup 3 모니터에서 [메뉴]-[서버 환경 설정]-[Apach, PHP GUI 환경설정]을 실행하여 서버 이름을 바꿔주어야 됩니다.)

이제 소스를 분석해 볼까요?

$read = file("counter.txt");
먼저 2행을 보면 counter.txt라는 파일을 읽어들여서 그 내용을 $read라는 변수에 집어 넣으라는 뜻입니다.
여러 줄의 내용이 있더라도 모두 불러들여 $read라는 변수에 저장을 합니다. 따라서 $read 변수는 여러 줄의 내용을 저장하기 위한 배열 변수가 됩니다. 즉 첫째 줄의 내용은 $read[0]에 저장되고 둘째 줄의 내용은 $read[1], 그리고 순서대로 $read[2], $read[3]...에 저장되게 됩니다.
그러나 이 실습에서는 0이라는 숫자 하나만 달랑 $read[0] 저장되겠죠.
$count = trim($read[0]);
3행을 보면, $read 변수에 저장된 내용 중에서 첫 번째 줄의 내용을 좌우 모든 공백을 잘라내어 다시 $count라는 변수에 저장한다는 뜻입니다.
trim() 함수는 대부분의 프로그래밍 언어에서 공통으로 사용되는 함수입니다. 좌우 공백을 잘라내고 순수하게 텍스트만 가져오죠.
$sum_count = $count + 1;
4행을 보면 3행의 $count 에 1을 더한 다음 $sum_count 변수에 저장을 합니다. 여기에 만약 1 대신 3을 쓰면, counter.txt 파일을 한번 읽을 때마다 숫자가 3씩 증가하게 됩니다.
$fp = fopen("counter.txt", "w");
6행에서는 이제 파일을 열게 됩니다.
2행에서 file("counter.txt") 한 것과는 다릅니다. 2행에서는 단순히 내용을 읽어들여서 저장하기 위한 함수이고
6행의 fopne() 함수는 어떠한 작업을 위해서 파일을 읽어들일 때 쓰는 함수입니다.
6행에서는 파일을 쓰기 모드로 열었습니다. 그리고 쓰기 모드로 연 counter.txt 파일의 이름을 $fp로 지정하였습니다.
위에서 w 가 쓰기 모드라는 뜻입니다. 만약 w 대신 a를 쓰면 추가(append) 모드로 열리고, r을 쓰면 읽기(read) 모드로 열립니다.
counter.txt에 기록된 숫자를 새롭게 바꾸어야되기 때문에 w 모드로 열었습니다. 만약 기존의 내용은 그대로 두고 그 아래에 한 줄 더 추가하려면 a 모드로 열면 됩니다.
이렇게 열어놓은 파일은 반드시 닫아 주어야 하는데,
8행에서 fclose($fp); 로 닫아줍니다.
fwrite($fp, $sum_count);
7행에서 fwrite() 함수를 이용해 파일에 데이터를 씁니다.
$fp에 $sum_count를 쓰라는 뜻이죠.
<li>echo "당신은 $sum_count 번째 방문자입니다.";
마지막으로 10행에서 $sum_count를 출력합니다.
10행에서는 화면에 표시하고 7행에서는 counter.txt 파일에 기록합니다. 그래야 다음에 counter.txt에 기록된 숫자에 1을 더해 다시 출력하니까요.

어떻습니까?
생각보다 많이 어렵지 않죠?

이상, 동주아빠 손병목이었습니다.
제목 글쓴이 날짜
[동주아빠] PHP 게시판(16강) - 입력 글 DB 저장(2) [4] 손병목 2002.12.25
[동주아빠] PHP 게시판(15강) - 입력 글 DB 저장(1) [2] 손병목 2002.12.25
[동주아빠] PHP 게시판(15강) - 입력 글 DB 저장(1) [3] 손병목 2002.12.25
[동주아빠] PHP 게시판(14강) - 게시판용 테이블 만들기 [3] 손병목 2002.12.25
[동주아빠] PHP 게시판 - 글쓰기 입력 write.php [5] file 손병목 2002.12.25
웹폰트 그딴거 난 몰라! TTF가 폰트 파일인건 알아! ^.^ [3] 아이쿠 2002.12.25
[동주아빠] PHP 게시판 - 글쓰기 입력폼(3) 입력값검사 [5] 손병목 2002.12.25
[동주아빠] PHP 게시판 - 글쓰기 입력폼(2) [1] 손병목 2002.12.25
[동주아빠] PHP 게시판 - 글쓰기 입력폼(1) FORM 태그의 이해(上) [8] 손병목 2002.12.25
[동주아빠] PHP 게시판 만들기 기초 (8) 초간단 카운터 만들기 [2] 손병목 2002.12.25
[동주아빠] PHP 게시판 만들기 기초 (7) 사용자정의함수 [4] 손병목 2002.12.25
[동주아빠] PHP 게시판 만들기 기초 (6) require,include [5] 손병목 2002.12.25
[동주아빠] PHP 게시판 만들기 기초 (5) 제어문(下) [10] 손병목 2002.12.25
[동주아빠] PHP 게시판 만들기 기초 (5) 제어문(上) [9] 손병목 2002.12.25
[동주아빠] PHP 게시판 만들기 기초 (4) 연산자 [10] 손병목 2002.12.25
[동주아빠] PHP 게시판 만들기 기초 (3) 변수와 배열 [6] 손병목 2002.12.25
[동주아빠] PHP 게시판 만들기 기초 (2) [12] 손병목 2002.12.25
[동주아빠] PHP 게시판 만들기 기초 (1) 준비 [8] 손병목 2002.12.25
if 문으로 xxx.php?db=src 이런식으로 해보자..(제1탄 기초를 확!) [14] inging-zb41 2002.12.12
왕초보용 개판 오분전 황당 쿠키(4) [2] 미친개 2002.12.09