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

PHP 기초활용 - (3) 카운터 기초 3

네로 | 2003.02.24 00:07:39 댓글: 0 조회: 428 추천: 4
분류웹 프로그래밍 https://life.moyiza.kr/itstudy/1758888
PHP 기초활용 - (3) 카운터 기초 3

글쓴이 : 悲魂(비혼), 2000/07/31(월)


본 강좌는 [PHP 기초중의 기초] 후속편입니다. 이번 강좌부터는 앞으로의 PHP 프로그래밍에 있어 도움될만한 내용으로 진행할 것입니다. 본
강좌의 내용은 여전히 PHP를 전혀 모르는 분, 이제 막 PHP를 공부하기 시작한 분들을 대상으로 합니다. 내용의 수정이 없는 한 자유로운 이용 및
배포가 가능합니다. 강좌의 내용 중 틀린 부분이 있거나 이해가지 않는 부분 등이 있으면 비혼의 조그만 세상(http://soulstar.new21.org/)이나
흑협의 PHP Tip(http://phptip.com/) 게시판에 글을 남겨주시면 고맙겠습니다. [참고 : 이번 강좌부터는 진행 속도가 다소 느릴 수 있으니 늦게
올라와도 이해해 주시기 바랍니다.]


* * * * * * * * * *

"비가 내리고 음악이 흐르면 난 당신을 생각해요 당신이 떠나시던 날 이렇게 비가 왔어요..."
"빗방울 떨어지는... 그대 숨소리 살아있는듯 느껴지면..."
"겨울비처럼 슬픈 노래를 부를 수 있을까아~ 애타는 이 내 마음과..."

* * * * * * * * * *

저번에 카운터를 간단히 만들어 보았습니다. 오늘 강좌에선 이 카운터를 살짝 고쳐볼까요...? 어김없이 1회때 다루었던 예제를 올립니다.

filename : counter.php
<?php
$count_file = "./count.dat";
$COUNT = fopen($count_file, "r+");
$count = fgets($COUNT, 6);
$count += 1;
fseek($COUNT,0);
fputs($COUNT,"$count");
fclose($COUNT);
echo $count;
?>

어때요 이젠...? 척 보면 아시겠어요...? ^^; 아직 수양이 부족한 분들, 앞의 강좌를 다시 읽고 오세요. 읽지만 말고 직접 작성 및 실행해 보시고 이
해하도록 노력해보세요. ^^; 자~ 다함께 노력...


$count_file = "./count.dat";
$COUNT = fopen($count_file, "r+");

두줄로 작성된 명령을 한줄로 바꿔볼까요? 어떻게 바꿀 수 있을까요~? [생각]

[변경] $COUNT = fopen("count.dat","r+");

어렵지 않죠? 코드의 응용은 작은 것 하나에서부터 시작됩니다. 오늘은 이것을 다르게 바꿔볼까요...?

filename : exam3-1.php
<?php
$count = file("count.dat");
$count[0]+=1;
echo $count[0];
$FILE = fopen("count.dat","w");
fputs($FILE,$count[0]);
fclose($FILE);
?>

1) file() ... 파일 전체를 읽어와 배열에 저장하는 함수

[형식] array file(string filename);

위의 예제에 쓰임새가 잘 나와있죠? count.dat의 파일을 읽어 한줄한줄 배열에 집어넣습니다. 카운터값은 첫번째 줄에 있으니 당연히
$count[0] 위치에 들어가겠죠.

이제 증가된 값을 출력하고 이 값을 파일에 기록해야겠죠. 그래서 파일을 쓰기모드로 엽니다. 그리고 증가된 카운터값을 파일에 기록하고 파일을
닫으면 작업 완료. 무척 간단하게 바뀌었죠?

이왕 file() 함수를 배웠으니 이를 이용해 카운터를 약간 수정해 볼까요?


filename : exam3-2.php
<?php
$count_file = "count.dat"; // 카운터로 쓸 파일을 지정합니다.

if(!file_exists($count_file)) { // 파일이 존재하는지 따져보고
touch($count_file); // 파일이 없을 경우 생성합니다.
chmod($count_file,0666); // 생성된 파일의 권한을 바꿉니다.
}
$count = file($count_file); // 파일의 내용을 읽어 $count에 배열로 저장합니다.
if($count[1] == $REMOTE_ADDR) { // 만약 $count[1]에 저장된 ip가 지금 ip와 일치하면
echo $count[0]; // 카운터 값을 그대로 보여주고~
exit; // 종료합니다.
} else { // 만약 ip가 일치하지 않으면
echo ++$count[0]; // 카운터를 1 증가시켜 표시해준 다음
$FILE = fopen($count_file,"w"); // 파일을 쓰기 모드로 열어
fputs($FILE,"$count[0]n$REMOTE_ADDR"); // 카운터와 ip를 저장합니다.
fclose($FILE); // 그럼 파일의 사용을 마쳐야겠죠?
}
?>

지금까지 예로 들었던 카운터는 새로고침을 할때마다 카운터가 팍팍 올라갔죠. 그런 카운터는 솔직히 필요가 없죠. [비혼 홈에 현재 이 쓸모없는
카운터를 사용중이라는 소문이 있는데 사실입니까? ... 루머입니다.] 앗~ 돌날아온당.


2) file_exists() ... 파일이 존재하는지 확인

[형식] int file_exists[string filename];

실제 사용예는 위의 예제에서 보셨죠? ^^;

파일이 존재하는지 먼저 살펴보고 만약 파일이 없으면 새로 작성을 해주는거죠. 초기화가 너무 간단하죠? 전같은 경우는 count.dat 파일을 만들
어 계정에 업로드하고 퍼미션을 변경해야 했잖아요.


3) touch() ... Set modification time of file

[형식] int touch(string filename, int time);

지정된 파일이 없는 경우 새로 생성해 주는 함수에요. 다른 설명은 생략합니다. 우린... 파일이 없을 경우 이 함수로 파일을 생성해주는 것만 알고
넘어가면 되니까요.


4) chmod() ... 파일의 권한 변경

[형식] int chmod(string filename, int mode);

일단은 형식만 알아두는거에요. 예제에서 chmod($count_file,0666); 이렇게 썼죠? 권한 설명은 나중에 따로 다루도록 해볼게요. 간단히 언급하
자면

파일에 대한 권한은 소유자,그룹,타인으로 구분되고 각각 읽기(4), 쓰기(2), 실행(1)의 항목을 가집니다. 이 숫자의 조합으로 권한을 부여하게 되
는 것이죠. 0666... 앞의 0은 일단은 넘어가세요. 666을 보면 읽기(4)와 쓰기(2)의 조합으로 모든 사람이 읽고 쓰기를 할 수 있게 되는거죠. 이해하
셨죠? ^^;

카운터 파일을 지정 -> 카운터 파일이 존재하는지 유무 확인 -> [없으면 파일 생성 및 권한 변경] -> 파일로부터 값을 배열로 입력받음 -> [만약
전에 기록된 IP 값과 지금의 IP 값이 일치하면 카운터 값만 보여주고 종료] -> 카운터 값을 1 증가 후 보여줌 -> 증가된 값과 현재 IP를 파일에 저
장[파일 열기, 파일 기록, 파일 닫기]

저번 강좌에 이어 이번 강좌에서도 익혀야 할 함수들이 많죠? 앗, 전에 다 다룬거라구요? ^^;


* * * * * * * * * *


지금까지 배운 내용을 응용하면 무엇을 만들 수 있을까요...? 기초 강좌의 입력 폼으로부터의 데이타 전달을 읽고 직접 작성해보신 분들은 오늘
강좌까지 익히면 재밌는 초간단 Login 프로그램을 만들 수 있을거에요. 입력 폼을 통해 이름과 암호를 php 프로그램에서 전달받아 파일을 읽어들
여 저장된 이름 암호와 비교...

우리는... 기초를 활용중입니다. 배운 내용을 마음껏 활용해 보시기 바랍니다. ^^;

[과제] HTML 입력폼으로부터 전달받은 값을 파일에 저장된 값과 비교해 일치하면 "Login 완료", 실패하면 "Login 실패" 문장이 출력되도록 만들
어 볼 것
[과제 예제] http://soulstar.new21.org/study2/report_login.htm
[과제게시판] http://soulstar.new21.org/v1.0/zeroboard/zboard.php3?id=report_1

* * * * * * * * * *

PHP 기초활용

(3) 카운터 기초 3 : http://soulstar.new21.org/study2/study3.htm
예제 : http://soulstar.new21.org/study2/exam3-1.php
예제 : http://soulstar.new21.org/study2/exam3-2.php

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

* 전설님에 의해서 게시물 이동되었습니다 (2004-05-30 17:12)
* 이동한 이유 :
* 원래의 위치 : 웹 공부 >>
* 이동후 위치 : 웹 공부 >> 웹 프로그래밍
추천 (4) 선물 (0명)
IP: ♡.27.♡.234
3,006 개의 글이 있습니다.
제목 글쓴이 날짜 조회
관리자
2003-09-20
11940
관리자
2003-09-20
11488
관리자
2003-09-20
20622
지구인
2010-08-27
19414
지구인
2009-09-07
13735
SOLIDH
2010-01-29
15693
엔죠라이프
2004-10-07
16786
네로
2003-02-24
629
네로
2003-02-24
562
네로
2003-02-24
1122
네로
2003-02-24
653
네로
2003-02-24
438
네로
2003-02-24
477
네로
2003-02-24
470
네로
2003-02-24
425
네로
2003-02-24
386
네로
2003-02-24
438
네로
2003-02-24
425
네로
2003-02-24
428
네로
2003-02-24
525
네로
2003-02-24
514
네로
2003-02-24
1442
네로
2003-02-24
718
네로
2003-02-24
568
네로
2003-02-24
538
네로
2003-02-24
675
네로
2003-02-24
628
네로
2003-02-24
489
모이자 모바일