ありがとうメッセージを表示する静的ページにユーザーを直接誘導します。次に、JavaScriptを使用window.location
してをダウンロードスクリプトに設定します。
ダウンロードページのヘッダーが正しく設定されている場合、ユーザーがお礼のメッセージを読んでいる間、ブラウザはファイルのダウンロードを開始します。
ユーザーがJavaScriptを無効にしている場合に備えて、必ず直接ダウンロードリンクを表示してください。
例:
index.php
<a href="thankyou.php">Click here to download.</a>
thankyou.php
<html>
<head>
<script type="text/javascript">
function startDownload() {
window.location = "/download.php";
}
</script>
</head>
<body onload="startDownload();">
<h1>Thank you!</h1>
<p>Your download will start in a moment. If it doesn't, use this <a href="download.php">direct link.</a></p>
</body>
download.php
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);
アップデート
データをindex.php
ダウンロードスクリプトに渡すために、GET
変数を使用できます。thankyou.php
このページへのリンクthankyou.php?download=12
は、ダウンロードが正しいファイルを取得するためのIDである場所になります。次に、次のようにマークアップにエコーアウトして、その変数をダウンロードスクリプトに渡します。
index.php
<a href="thankyou.php?download=12">Click here to download.</a>
thankyou.php
<html>
<head>
<script type="text/javascript">
function startDownload() {
window.location = "/download.php?file=<?=$_GET['download']?>";
}
</script>
</head>
<body onload="startDownload();">
<h1>Thank you!</h1>
<p>Your download will start in a moment. If it doesn't, use this <a href="download.php?file=<?=$_GET['download']?>">direct link.</a></p>
</body>
次に、ダウンロードスクリプトで値を取得し、好きなように処理します。