1. ホーム
  2. php

[解決済み] ファイルのダウンロードを追跡する方法

2023-05-27 11:16:40

質問

フラッシュプレーヤーでmp3を再生するウェブサイトを持っています。ユーザーが「再生」をクリックすると、フラッシュプレーヤーが自動的にmp3をダウンロードし、再生を開始します。

特定の曲のクリップ (または任意のバイナリ ファイル) が何回ダウンロードされたかを簡単に追跡する方法はありますか?


再生リンクは、実際の mp3ファイルへのリンクですか? へのリンクなのでしょうか?

後者であれば、簡単に ロギングコードを追加して を追加することができます。

前者であれば、ウェブサーバーのログを追跡できるような ウェブサーバーのログを追跡することができる を追跡して、その区別をする必要があります。私の ホスティングプランにはWebalizerが付属しています。 これはうまく機能します。

javascriptのコードなので、それで解決です。

しかし、他の方法(ホストを切り替えることなく)を使用してダウンロードを追跡する方法を知っているのは良いことです。

どのように解決するのですか?

面白いことに、私は2日前に私のすべての音楽のためのPHPメディアギャラリーを書きました。私は同じような問題がありました。 私は使用しています http://musicplayer.sourceforge.net/ をプレーヤに使用しています。そして、プレイリストはphpで構築されています。すべての音楽のリクエストは xfer.php?file=WHATEVER と呼ばれるスクリプトに送られます。

$filename = base64_url_decode($_REQUEST['file']);
header("Cache-Control: public");
header('Content-disposition: attachment; filename='.basename($filename));
header("Content-Transfer-Encoding: binary");
header('Content-Length: '. filesize($filename));

//  Put either file counting code here, either a db or static files
//
readfile($filename);  //and spit the user the file

function base64_url_decode($input) {
    return base64_decode(strtr($input, '-_,', '+/='));
}

そして、ファイルを呼び出すときは、次のようなものを使います。

function base64_url_encode($input) {
     return strtr(base64_encode($input), '+/=', '-_,');
}

http://us.php.net/manual/en/function.base64-encode.php

もし、JavaScriptやフラッシュプレイヤー(例えばJWプレイヤー)を使っていて、mp3ファイルなどの実際のリンクが必要な場合は、テキスト "&type=.mp3" を追加して、最後のリンクが以下のようになるようにすればよい。 というようになります。そうすれば、ファイルのリンクに影響を与えることなく、拡張子がmp3で終わっているように見えるのです。