create_access_counter.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | <?php // 페이지 ID를 설정함 // 페이지 ID마다 카운터 파일을 만듦 // 이 파일에 직접 액세스한 경우는 '0'으로 기록함 $pageID = !isset($pageID) ? 0 : $pageID; // 허용하는 페이지 ID만 카운트 함 // 허용하는 페이지 ID의 배열(직접 액세스를 거부할 경우 배열에서 '0' 삭제) $countPages = array(0, '1', '2', 'top', 'home'); // in_array() 함수의 제3인수에 true를 설정하고 유형도 확인함 if( !in_array($pageID, $countPages, true) ) { echo "카운트할 수 없음"; return; } // 경로를 포함한 카운터 값을 기록할 파일을 설정함 $counterPath = __DIR__; if( !is_dir($counterPath) ) { die('디렉터리가 존재하지 않음'); } $counterFile = realpath($counterPath) . '/' . $pageID . '.dat'; // 파일을 연다(추가 기록/읽기 모드) $fp = fopen($counterFile, 'a+b'); if( !is_resource($fp) ) { die('파일을 열지 못했음'); } // 파일을 잠금 flock($fp, LOCK_EX); // 카운터 값을 가져오고 1을 가산함 $count = fgets($fp); $count = $count + 1; // 파일의 내용을 지움 ftruncate($fp, $count); // 파일에 카운터 값을 기록함 fwrite($fp, $count); // 파일의 잠금을 해제함 fflush($fp); flock($fp, LOCK_UN); // 파일을 닫음 fclose($fp); // 카운터 값을 출력 echo "액세스 수: $count (PAGE ID:$pageID)"; |
111.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>파일을 사용해 액세스 카운터를 작성</title> <link href="style.css" rel="stylesheet"> </head> <body> <div> <?php // 카운터 처리용 파일을 읽음 $pageID = 'home'; include './create_access_counter.php'; ?> </div> </body> </html> |
댓글 없음:
댓글 쓰기