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
본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.