画像ギャラリーから誰がどの画像をダウンロードしているかを調べる方法を見つけようとしています。ユーザーは、サムネイルの横にあるボタンを使用してダウンロードするか、右クリックして [リンクを名前を付けて保存] を使用できます。ユーザー セッションまたは ID を、PHP または JavaScript を使用してすべてのブラウザーからの [リンクを名前を付けて保存] アクションに関連付けることは可能ですか。
5 に答える
はい、これを行うための私の好みの方法は、PHP を使用することです。ファイルをロードしてユーザーのブラウザに送信するスクリプトを設定する必要があります。このスクリプトは、ダウンロードをどこか (データベースなど) に記録することもできます。
たとえば、非常に大まかな擬似コードでは次のようになります。
ダウンロード.php
$file = $_GET['file'];
updateFileCount($file);
header('Content-Type: image/jpeg');
sendFile($file);
次に、ダウンロード リンクが実際のファイルではなく、download.php を指すようにします。(もちろん、updateFileCount と sendFile は提供する必要がある関数であることに注意してください。このスクリプトは、使用できるダウンロード スクリプトの例です)
注: $_GET['file'] を使用してファイル名全体を取得することは避けることを強くお勧めします。悪意のあるユーザーが Web サーバーから機密ファイルを取得するために使用する可能性があります。しかし、PHP ダウンロードの安全な使用については、別の質問のトピックです。
Phill Sacre の提案に強く同意します。あなたが探しているものについては、これが道です。
また、追跡対象のファイルを直接の Web パスから除外して、直接リンクできないようにすることができるという利点もあります。
画像が有料コンテンツであるため、アクセスを制限する必要があるクライアント サイトでこの方法を使用します。
サーバーのアクセス ログには、サムネイル化されていないバージョンのファイルに対する要求が既に含まれているはずなので、ログ形式を変更してセッション ID を含める必要があります。
保存されている画像はローカルのコンピューター上にあるため、システムから画像を既に取得しているため、そのような情報を取得する方法はありません. JavaScript を使用しても、ユーザーが 2 番目のマウスボタンを押すたびに何らかの ajax を使用してログを記録することができると私が知っている最善の方法です。
このアイデアはあまり好きではありませんが、誰かが画像をダウンロードするたびにログを記録したい場合は、画像をダウンロードボタンをクリックする必要のあるフラッシュまたは Java アプリ内でホストすることができます。そうすれば、彼らがそれを行わずに画像を取得する唯一の方法は、彼らが側に来たときにパケットをキャプチャするか、スクリーンショットを撮ることです.
ImageDownload.php?picture=me.jpg などのゲートウェイ スクリプトが必要です。
そのページは画像バイトを返し、画像がダウンロードされたことをログに記録します。