ダウンロードカウンターDownload Counterダウンロード履歴閲覧プログラム
= PHP コードをダウンロードして設置 =
始めに
Webページのユーザーがプログラムなどをダウンロードして使用した際に、そのダウンロード数を知ることができるプログラムの紹介です。 ページ上にダウンロードカウンタを設置することが可能で、サイト管理者はブラウザ上でダウンロード履歴を簡単に確認することもできます。
【ページに設置したサンプル】
総ダウンロード数:1865[今日:23 昨日:76]
【ブラウザーで開いたサンプル】
*ダウンロードリンクを設置したページで、ファイルの保存を促すメッセージが表示され後、ダウンロードをせずに閉じてもダウンロードとしてカウントされます。これは、リンクをクリックした数をカウントしているためです。
ダウンロード
このページから、プログラムを圧縮した「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 を含めるか、ファイル名のみを表示するかの選択をすることができます。
- 1 ページに複数の履歴テーブルを設置した場合、「$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"; } } // 総ダウンロード数で降順ソート 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: or https: から記述 $targetFiles = array( '1' => 'ご自身のURL/ファイル名.zip', '2' => 'ご自身のURL/ファイル名.pdf', '3' => 'ご自身のURL/ファイル名.pdf', '4' => 'ご自身のURL/ファイル名.pdf', ); ?> </body> </html>
置き換えるコードをコピー
include __DIR__ . '/config.php';
* プログラム内の「font-family」は、必要に応じてご自身のサイトに合わせて調整してください。
ここまでで、「ダウンロードカウンター・ダウンロード履歴閲覧プログラム」のための PHP コードの紹介は終了です。ご活用いただければ幸いです。
ご利用になられてのご感想などをお寄せいただければ幸いです。なお、ご質問にはお答えすることができませんのでご了承ください。