웹마스터 팁

이번 시간부터 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을 더해 다시 출력하니까요.

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

이상, 동주아빠 손병목이었습니다.
제목 글쓴이 날짜
6. 시간관련 함수 한꼬마 2002.10.04
7. 함수(FUNCTION) 와 클래스(CLASS) 한꼬마 2002.10.04
8. PHP 의 제어구조 [1] 한꼬마 2002.10.04
9. 표현식(Expressions) - 연산자 한꼬마 2002.10.04
10. 문자열(STRING) 처리 및 관련함수 [1] 한꼬마 2002.10.04
11. PHP에서의 변수형 [1] 한꼬마 2002.10.04
exp. 완전 랜덤배너 소스 [8] file TheMics 2002.10.12
페이지에 접속할 때마다 다른 배너보여주는 소스.. [9] 풍월주인 2002.10.07
[PHP소스] 서버 시간에 따라 배경이 바뀌는 테이블!! [8] file 조현 2002.10.11
www 떼고 접속하면 다시 www붙은 주소로 리다이렉션 걸기 [8] [EC]POLARGOM 2002.10.18
Java Applet을 활용한 업로드시 전송률 확인하기.. file 아이쿠 2002.10.19
이메일 주소 인코딩하기 [7] 투유 2002.10.20
[추천 소스] nzeo에 있는 북마크 기능 구현하기(hot key 는 제외) 초허접 강좌 [10] 정승재 2002.10.22
[추천 소스] 특정일로부터 지난날짜 혹은 남은날짜 구하기~ [5] 박은석 2002.10.22
사용자정의 함수 뽑아오는 함수입니다... [4] 우트라 2002.10.23
현재 접속자 구하기...(파일2개) inging-zb41 2002.10.26
[출처있음]NZEO 채널 흉내내기 [10] (' _ ') napclub 2002.10.28
제로보드로 유료 사이트 만들기 (서론) [6] 한꼬마 2002.10.28
제로보드로 유료 사이트 만들기 (결제 테이블) [2] 한꼬마 2002.10.30
제로 카운터(zero counter)에서 총 접속자 숫자 조정하기 (Easy 버젼) [13] 미카엘 2002.10.31