私はファイルホスティングサイトを持っており、ユーザーはダウンロードに対して報酬を獲得します。だから私は、訪問者がファイル全体をダウンロードしたかどうかを追跡して、報酬のためだけに偽の部分的なダウンロードがないようにする方法があるかどうかを知りたかったのです。
ありがとうございました。
私はファイルホスティングサイトを持っており、ユーザーはダウンロードに対して報酬を獲得します。だから私は、訪問者がファイル全体をダウンロードしたかどうかを追跡して、報酬のためだけに偽の部分的なダウンロードがないようにする方法があるかどうかを知りたかったのです。
ありがとうございました。
Webサーバーから返されたHTTP応答コードを監視し、それらを生成したセッションに結び付けることができれば、ビジネスになります。
応答コード206は、システムがすべての情報ではなく一部の情報を配信したことを示しています。ファイルの最後のチャンクが消えるとき、それは206の応答コードを持つべきではありません。
URL内にセッションコードを配置することでこれをユーザーセッションに関連付けることができれば、単純なログ集計に基づいてポイントを与えることができます。
私はファイルホスティングウェブサイトに同様のソリューションを実装しました。
実行したいのは、結果に関係なくphpスクリプトの実行の終了を検出できるようにするregister_shutdown_functionコールバックを使用することです。
次に、サーバー上のWebにアクセスできない場所にファイルを配置し、ダウンロードをphpで実行します。つまり、クライアントに渡されたバイト数を追跡できるようにする必要があります。
実装の基本的な方法は次のとおりです(例:)
<?php
register_shutdown_function('shutdown', $args);
$file_name = 'file.ext';
$path_to_file = '/path/to/file';
$stat = @stat($path_to_file);
//Set headers
header('Content-Type: application/octet-stream');
header('Content-Length: '.$stat['size']);
header('Connection: close');
header('Content-disposition: attachment; filename='.$file_name);
//Get pointer to file
$fp = fopen('/path/to/file', 'rb');
fpassthru($fp);
function shutdown() {
$status = connection_status();
//A connection status of 0 indicates no premature end of script
if($status == 0){
//Do whatever to increment the counter for the file.
}
}
>?
明らかに改善する方法がありますので、詳細や別の動作が必要な場合は、お知らせください。