0

これが取引です。私はいくつかのファイルを販売しており、それらはダウンロードできます。

そのため、ファイルの料金を支払ったユーザーのみがファイルをダウンロードできます。さまざまな理由から、PHP スクリプトによるダウンロードを避けたい - ファイルが大きい (5GB 以下のものもある) - ダウンロードがクラッシュした場合、最初からやり直す必要がある。

方法はありますか?PHPスクリプトを使用してファイルをストリーミングする代わりに、ファイルのダウンロードが許可されているユーザーを特定し、Apacheに仕事をさせて(ダウンロードへの直接リンクを提供する)、あらゆる戦略。

何か案は ?

4

4 に答える 4

1

mod認証トークンはどうですか?

http://code.google.com/p/mod-auth-token/

非常に良い解決策になる可能性があります-私は同様の戦略を使用しますが、独自のモジュールを使用します.

于 2012-05-11T11:18:03.563 に答える
0

一部のスマートでは、実際のファイルへのシンボリックリンクを作成し、ファイルのダウンロード後にそれらをオフにすることができます。

ユーザー購入ファイル:シンボリックリンクを作成し、一意のURLをユーザーに送信します。その後、ログファイルを監視し、ファイルがダウンロードされたときにシンボリックリンクを無効にすることができます。または、ログファイルにアクセスできない場合は、ユーザーがアクセスしたときにのみシンボリックリンクを作成するPHPファイルにユーザーを送信し、一定時間後にシンボリックリンクをオフにすることができます(ただし、その時間が何であるかをどのように確認できますか?わからない)。

完璧な解決策ではなく、ただアイデアを投げかけるだけです。

于 2012-05-11T11:25:42.623 に答える
0

任意の URL を共有できるため、ファイルがダウンロードされたことを示す表示を永続化する必要があります。そうしないと、1 人の有料訪問者が URL を公開し、誰でもダウンロードできるようになります。

PHP を使用すると、ファイル全体が送信された後にフラグを設定できます (これは、ダウンロードが成功したことを大まかに示します)。そのため、ファイルを再度ダウンロードすることはできません。

ある種の認証を使用することもできますが、資格情報は共有できます。

于 2012-05-11T11:08:50.853 に答える
0

かなり簡単な解決策の 1 つは、仮想関数を使用することです。ユーザーを認証してから、リクエストを apache に送信します。それはファイルをストリーミングするためにphpを使用していません。

于 2012-05-11T11:10:14.663 に答える