2

こんにちは、ユーザーが非表示の仮想 mov.zip ファイルをペイパルで購入できるようにしています。トランザクション部分とデータベースへの詳細の保存などを取得しました...しかし、ユーザーがトランザクションページに戻った後、それらを制限されたフォルダーにある圧縮ファイルにリンクしたいと思います(.htaccessはすべて拒否します)。このディレクトリへのアクセスを許可して、ファイルを数日間ダウンロードするにはどうすればよいですか。サイズが非常に大きいため、一時的にファイルをディレクトリから移動できません (hd アクション効果のパッケージ)。

ありがとうございました。

4

1 に答える 1

2

ホスティングでスクリプト タイムアウトの PHP 設定を変更できる場合は、ユーザー アクセスをチェックする PHP スクリプトを介してファイルをストリーミングできます。

たとえば、リクエスト:

>http://domain.com/download.php?file=be6bc64c94bbc062bcebfb40b4f93304

<?php
session_start();

if (!isset($_GET['file']) header('Location: index.php'); // invalid request

// 1. check user session
...
// 2. get file from hash (use a Db like MySQL
$file = ...;

// 3. check user privilege for the given file
...

// 4. proceed to download
if (file_exists($file)) {
    set_time_limit(0);
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
} else {
    // error 404
}
于 2012-08-02T18:26:29.567 に答える