コンテンツの処理は問題ありませんが、別の解決策はPATH_INFOを使用して、次の方法でファイルを取得することです。
http://example.com/download.php/2793156879.zip
download.phpは次のようになります
// handle path_info
$filename=$_SERVER['PATH_INFO']; // gets "/2793156879.zip" as $filename
// do smtg w/ $filename...
// ...
// download
$len = filesize($filename);
header("Content-type: application/force-download");
header("Content-Length: $len");
readfile($filename);
注:application / force-downloadは存在しません。存在するすべてのブラウザーで、強制的にダウンロードするためだけに存在します。(一部のMSIEは、アプリケーション/オクテットストリームに問題があったようです)
このアプローチには、すべてのブラウザで機能するという利点があります。非常に古いブラウザでも、「Content-Disposition:」ヘッダーをサポートしていません。
PATH_INFO文字列から製品コードを自分でsubstr()する必要があるという小さな欠点があります