다운로드 카운터
다운로드 이력 브라우징 프로그램
= PHP 코드 다운로드 및 설치=
처음에
웹페이지 사용자가 프로그램을 다운로드하여 사용할 때 다운로드 횟수를 알 수 있는 프로그램에 대한 소개입니다. 페이지에 다운로드 카운터를 설정할 수 있으며, 사이트 관리자도 브라우저에서 다운로드 내역을 쉽게 확인할 수 있습니다.
【페이지에 설치한 샘플】
총 다운로드 수: 1865[오늘:23 어제:76]
【브라우저에서 열었을 때의 샘플】
* 다운로드 링크를 설정한 페이지에서 파일을 저장하라는 메시지가 나온 후 다운로드를 실행하지 않고 닫아도 다운로드 수로 계산됩니다. 이는 링크를 클릭한 수를 세었기 때문입니다.
다운로드
이 페이지에서 프로그램을 압축한 "zip" 파일을 다운로드하여 자신의 사이트에 설치하십시오. 파일명은 「count.php」로 하고 있습니다만 변경도 가능합니다.
코드의 변경, 페이지 디자인의 변경 등, 이용은 모두 자유롭습니다.
'zip' 파일에는 'count.php'라는 파일 하나만 들어있으며, 관리자용 '로그인 화면'은 자동으로 생성된다.
PHP 프로그램 다운로드
설치에 대해
다운로드한 'count.php.zip' 파일을 압축 해제하면 'count.php'라는 파일이 생깁니다. 이것을 "download_history"와 같이 자신의 사이트에 디렉토리를 만들어 저장하십시오.
'zip' 파일에 포함된 파일은 'count.php'라는 파일이 하나뿐이며 관리자용 '로그인 화면'이 자동으로 생성됩니다.
설정에 대하여
주요 설정 방법입니다. 이러한 주요 부분은 PHP 파일에도 포함되어 있습니다.
- 비밀번호 설정에 대해
- 관리자용 페이지에는 암호 설정이 필요합니다.
- 초기 설정의 패스워드는 「admin」입니다만, 임의의 캐릭터 라인으로 바꾸어 주세요.
- 비밀번호가 필요한 페이지에 대한 외부 액세스를 방지하려면 가능한 한 강력한 비밀번호를 설정하십시오.
- 다운로드 대상 파일 설정
- "$targetFiles = array()"부분의 설정을 완료해 주세요.
- ''1' => '자신의 URL/파일명.zip','등의 부분입니다.
- 로그 파일을 저장하는 디렉토리
- 히스토리를 기록하는 로그 파일을 저장하려면 원격 서버에 "log"라는 디렉토리가 필요합니다.
- 이 프로그램은 처음 업로드 할 때 "log"라는 디렉토리를 자동으로 생성합니다. 다만, 「디렉토리가 없다」등의 메세지가 나왔을 경우는 별도 작성해 업로드해 주세요.
- 처음 업로드했을 때의 이력 표시에 대해
- 처음 업로드했을 때의 히스토리 표시에 '날짜'와 숫자의 '0'이 표시될 수 있습니다.
- 이는 자동으로 생성된 'log' 디렉토리에 업로드한 날짜가 포함된 'count_1.log'와 같은 로그 파일도 동시에 생성되기 때문입니다.
- 이 방법이 걱정되는 경우 원격 서버에 연결하여 "count_1.log"와 같은 파일을 다운로드하고 데이터를 삭제하고 업로드하십시오.
- 다만, 「날짜」와 「0」이 들어간 상태는, 언제 카운터를 시동시켰는지의 이력이 될지도 모릅니다. 그날 다운로드가 있으면 카운트 업합니다.
- 관리자 열람 페이지에서의 표시에 대해서
- 관리자가 탐색하는 페이지 보기에서는 해당 파일 보기에 URL을 포함할지 또는 파일 이름만 표시할지 여부를 선택할 수 있습니다.
- 한 페이지에 여러 개의 히스토리 테이블을 설치한 경우 "$targetFiles = array()"로 설정한 순서를 그대로 유지할지, 아니면 새로운 로그가 발생한 날짜순으로 정렬할지 선택할 수 있습니다.
- 페이지 디자인, CSS 등
- 페이지 디자인, CSS 등은 적절히 조정하고, 보기 쉬운 페이지로 이용해 주십시오.
- 한때 CSS는 외부 파일이었지만 CSS를 변경할 때 태그를 참조하면서 작업할 수 있도록 같은 페이지에 기재했습니다.
- 다운로드 링크를 설치하는 페이지에서 설정하는 방법
- 일반적으로 다운로드의 <a> 태그는 다음과 같이 작성합니다.
<a href="/download_history/sample.zip" download="다운로드 시 파일명.zip">[임의 문자열]</a>
- 이 프로그램에서는 다운로드의 <a> 태그를 다음과 같이 작성합니다.
- "download=1" 의 숫자를 "$targetFiles = array()"로 설정한 숫자에 맞춥니다. 이 설정으로 다운로드할 파일을 참조합니다.
- 패스는 자신의 페이지에 맞추어 주세요.
- 다운로드 링크를 설치한 페이지의 업로드는, "$targetFiles = array()"를 설정한 파일(여기에서의 예는 「count.php」)의 업로드를 끝내고 나서 해 주세요.
[예시]복사<a href="/download_history/count.php?download=1" download="다운로드 시 파일명.zip" target="_blank">[임의 문자열]</a> - 일반적으로 다운로드의 <a> 태그는 다음과 같이 작성합니다.
- 다운로드 링크가 설치된 페이지 등에 한 줄로 기록을 표시하는 코드
- 다음과 같은 JavaScript를 만들고 표시할 페이지에 설치합니다.
- 'dsp_count=1'의 숫자를 "$targetFiles = array()"로 설정한 숫자와 일치시킵니다.
- '&day_dsp=on'을 삭제하면 '오늘/어제'가 표시되지 않고 '총합계'만 표시된다.
- 패스는 자신의 페이지에 맞추어 주세요.
[예시]복사<script type="text/javascript" src="/download_history/count.php?dsp_count=1&day_dsp=on"></script>총 다운로드 수:1865[오늘:23 어제:76]총 다운로드 수:1865
확장 설정에 대하여
여러 테이블을 표시하는 경우 이 프로그램의 기본 설정은 최신 업데이트 시간순으로 정렬됩니다. 전체 다운로드 수를 기준으로 정렬하려면 'total_downloads.php'와 같은 파일을 새로 만들고 다음 부분을 바꿉니다.
- 주석 변경
다음 섹션의 주석을 대체하십시오.// 페이지에 여러 테이블이 표시될 때 원래 배열을 대체하고 새로운 로그 순서로 정렬할지 여부 선택/설정 - 코드 및 주석 변경
다음 섹션의 코드 및 주석을 대체하십시오. 하나의 블록으로 간주해주시기 바랍니다.// 파일 경로 및 해당 파일의 마지막 수정 일자 가져오기 (최신에서 최신 순으로 정렬) $filePathsAndDates = array(); foreach ($filePath as $key => $path) { if (file_exists($path)) { $filePathsAndDates[$key] = filemtime($path); } else { // 이 오류를 로그에 출력하고 계속 진행할지 프로세스를 중단할지 결정 echo "오류: 파일이 존재하지 않음 - $path<br>"; } } // 최신 날짜를 기준으로 내림차순으로 정렬 (가장 최신 날짜가 먼저 옴) arsort($filePathsAndDates); // 정렬된 파일 경로 배열 다시 구축 $sortedFilePaths = array(); foreach ($filePathsAndDates as $key => $date) { $sortedFilePaths[$key] = $filePath[$key]; }
- 파일 생성 및 설정
- 여러 페이지를 만들 때 내용을 추가하면서 통일하여 설정하는 항목에서 실수를 방지하기 위해 다음 코드 부분을 외부 파일로 만들고 현재 구현된 부분에 다른 코드로 로드합니다. "config.php"와 같은 이름으로 외부 파일을 작성하십시오.
// 다운로드할 파일에 대한 설정. 여러 개인 경우 '2', '3', '4' 등을 추가하십시오. "'0'"도 유효합니다. // "http:" 또는 "https:" 에서 쓰기 $targetFiles = array( '1' => '당신의 URL/파일명.zip', '2' => '당신의 URL/파일명.pdf', '3' => '당신의 URL/파일명.pdf', '4' => '당신의 URL/파일명.pdf', );
- 외부 파일을 불러오는 코드 및 배치 위치
- "config.php"와 같은 이름으로 만든 파일을 다음 위치에서 코드 "include __DIR__ . '/config.php';"로 불러옵니다.
- 아래 섹션을 주석 처리하거나 삭제하고 대신 코드 "include __DIR__ . '/config.php';"로 대체하십시오.
//$targetFiles = array( // '1' => '당신의 URL/파일명.zip', // '2' => '당신의 URL/파일명.pdf', // '3' => '당신의 URL/파일명.pdf', // '4' => '당신의 URL/파일명.pdf', //);
교체할 주석 복사
// 페이지에 여러 테이블을 표시하는 경우, 원래 배열을 교체하고 다운로드 총 수가 많은 순으로 정렬할 것인지 여부 선택 및 설정
교체할 코드와 댓글 복사
// 총 다운로드 수를 저장하는 배열 $totalDownloads = array(); // 파일 경로와 전체 다운로드 수를 가져옵니다. foreach ($filePath as $key => $path) { if (file_exists($path)) { $line = file($path); $total = 0; // 각 행의 다운로드 수 합계 foreach ($line as $val) { $valArray = explode(',', $val); $total += trim($valArray[1]); } // 총 다운로드 수를 배열에 저장 $totalDownloads[$key] = $total; } else { // 이 에러는 로그에 출력해, 처리를 계속할까 중단할까를 결정 echo "오류: 파일이 존재하지 않습니다 - $path<br>"; } } // 총 다운로드 수로 내림차순 정렬 arsort($totalDownloads); // 정렬 된 파일 경로의 배열 재구성 $sortedFilePaths = array(); foreach ($totalDownloads as $key => $total) { $sortedFilePaths[$key] = $filePath[$key]; }
"config.php"로 지정된 부분의 샘플을 복사
<!doctype html> <html> <head> <meta charset="UTF-8"> <title>DownloadHistory</title> <meta name="robots" content="NOINDEX,NOFOLLOW"> </head> <body> <?php // 이 부분만을 외부 파일로 하고, 사용하는 페이지내에 「include __DIR__. '/config.php';」로 읽어들인다 // 다운로드할 파일에 대한 설정. 여러 개인 경우 '2', '3', '4' 등을 추가하십시오. "'0'"도 유효합니다. // "http:" 또는 "https:" 에서 쓰기 $targetFiles = array( '1' => '당신의 URL/파일명.zip', '2' => '당신의 URL/파일명.pdf', '3' => '당신의 URL/파일명.pdf', '4' => '당신의 URL/파일명.pdf', ); ?> </body> </html>
대체 코드를 복사
include __DIR__ . '/config.php';
* 프로그램 내의 "font-family"는 필요에 따라 귀하의 사이트에 맞게 조정해야 합니다.
이상으로 '다운로드 카운터/다운로드 기록 열람 프로그램'을 위한 PHP 코드 소개를 마칩니다. 활용하실 수 있으면 다행입니다.
일본어판 번역으로 인해 문장에 실수가 있을 수 있습니다. 죄송합니다만, 코드내의 문언으로 잘못이 있었을 경우는 스스로 수정・조정을 해 주세요.
이용해 주신 소감 등을 보내주십시오. 단, 질문에 대한 답변은 불가능하오니 양해 부탁 드립니다.