PHP로 카운터 만들기
2022.07.20 18:00
PHP로 카운터 만들기
많은 문제점이 있는 카운터지만 그래도 잘돌아가니 그냥 쓰쎠도 문제 없을 겁니다.
그냥 주석으로만 설명 하겠습니다.
01 |
<?php // 아시죠.. PHP의 시작을 알립니다. |
02 |
$DataFile="counter.data"; // 햔재 디렉토리의 counter.data 에 저장을 합니다. |
03 |
if(file_exists($DataFile)) //counter.data파일이 있나 검사를 합니다 있으면 다음을 시작합시다. |
04 |
{ |
05 |
$fp=fopen($DataFile, 'r'); // 파일을 열고 |
06 |
$buffer=fread($fp,filesize($DataFile)); //파일을 읽어 들입니다. |
07 |
fclose($fp); //읽은 파일을 닫아야죠.. |
08 |
$Temp=explode("|",$buffer); //파일을 |를 기준으로 나눕니다. |
09 |
$Count=intval($Temp[0]); // 앞쪽에 있는[0]을 Count에 저장 |
10 |
$LastIP=$Temp[1]; // 중간에 있는 [1]을 LastIP에 저장 |
11 |
$Time=intval($Temp[2]); // 마지막 [2]을 Time에 저장합니다. |
12 |
} else { |
13 |
$Count=0; //만약 파일이 없으면 Count는 기본적으로 0으로 |
14 |
} |
15 |
16 |
$GetIP=getenv("REMOTE_ADDR"); //현재 접속자의 IP를 읽어 옵니다. |
17 |
18 |
$AccessTime=$Time+900; //이건 전에 접속한 사용자의 시간에 900초 (15분)을 더합니다. |
19 |
$CurrentTime=time(); //현재 시간을 저장합니다. |
20 |
21 |
if(($GetIP != $LastIP) || ($CurrentTime>$AccessTime)) //만약 바로전에 접속한 IP가 현제 접속한 IP와 |
22 |
{ //다르면 숫자1증가 또는 같은 IP라도 시간이 15분경과하면 |
23 |
$Count=$Count+1; //카운터 증가 |
24 |
} |
25 |
26 |
$LastIP=getenv("REMOTE_ADDR"); //현재 접속자 IP저장 이것이 다음번에 마지막 접속자 IP가 됨 |
27 |
$LastTime=time(); //현재 시간 저장 이것이 다음번에 마지막 접속 시간이 됩니다. |
28 |
$fp=fopen($DataFile,'w'); |
29 |
fwrite($fp,$Count."|".$LastIP."|".$LastTime); // |를 구분으로 counter.data에 3가지 항목을 저장 |
30 |
fclose($fp); //물론 파일을 닫아 주고 |
31 |
32 |
$time=getlastmod(); //날짜를 읽어옴 |
33 |
$UpDate=date('Y/m/d',$time); //날짜를 제가 표시한 XXXX/XX/XX형식으로 저장 |
34 |
35 |
echo "<font face="굴림체" size="2" color="olive">마지막수정일 : $UpDate</font><br>"; |
36 |
echo "<font face="굴림체" size="2" color="olive">놀러오신분 : $Count</font>"; |
37 |
echo "<br><font face="굴림체" size="2" color="olive">오신분 IP : $LastIP</font>"; |
38 |
?> |
나머지 부분들은 출력 부분입니다. 적당히 조정하시면 됩니다.
한가지 문제점을 찾았는데 counter.data가 퍼미션 읽고 쓰기가 가능해야 한다는 겁니다.
[출처] https://yesyo.com/mintbbs/bbs/board.php?bo_table=php&wr_id=34&page=6
본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.

