これを効果的に行うには 2 つの部分が必要です... 表示された PHP ファイル ( と呼びましょdownload.php
う) で、顧客をゼロにカウントダウンする Javascript 関数を開始する必要があります。ゼロになると、実際のダウンロード場所にリダイレクトされます ( と呼びましょうrealdl.php
)。このファイルは実際にファイルの内容を取得し、リダイレクトまたはクリックされたときにユーザーに送信します。
で必要な要素を次に示しますdownload.php
。
<? $file_dl_url = "/realdl.php?id=FILEID"; ?>
<script language="javascript">
var elapsed = 0;
function countdown {
// see if 5 seconds have passed
if (elapsed >= 5) {
window.location = <?= $file_dl_url ?>;
} else {
// update countdown display & wait another second
elapsed++;
setTimeout("countdown", 1000);
}
}
setTimeout("countdown", 1000);
</script>
<a href="<?= $file_dl_url ?>">Click Here</a>
次に、必要なのrealdl.php
は次のとおりです。
$file_contents = load_file_from_id($_GET['id']);
$file_name = determine_filename();
header("Content-Disposition: attachment; filename=$file_name");
echo $file_contents;
もちろん、ファイルの内容を取得する方法 (ディスクまたはデータベースから読み取る方法) と、ファイル名を特定する方法を提供する必要があります。時間をファイル名形式として使用するには、関数についてhttp://us3.php.net/manual/en/function.strftime.phpstrftime
を参照してください。
ファイルの保存方法によってはfpassthru
、例としてローカル ファイルを使用すると、より効果的になります。Content-Length
ダウンロード前にファイル サイズを判断できる場合 (つまり、送信するコンテンツが静的な場合) は、ヘッダーを送信することもできます。