認証されたユーザーにレポートへのアクセスを提供しようとしています。私は(ログインしているユーザーに応じて)このようなリンクを作成するには、次のコードで :安全なダウンロード可能なリンク
echo "<a href = 'http://127.0.0.1:8080/reports.php?file=XXXXXX.html'>Download Report Januar</a>";
が、これはそれを行うための保存方法ですまたは任意のより良いアイデアがあるのですか?
$dir = '/var/www/html/44ahj34k578adfhq238iqdn7VB/';
$type = 'text/html';
if(!empty($_GET['file']) && !preg_match('=/=', $_GET['file'])) {
if ($_SESSION['username'] == 'XXXXX') {
if(file_exists ($dir.$_GET['file'])) {
makeDownload($_GET['file'], $dir, $type);
}
} else {
die("sorry, but you are not my type.");
}
}
function makeDownload($file, $dir, $type) {
header("Content-Type: $type");
header("Content-Disposition: attachment; filename=\"$file\"");
readfile($dir.$file);
}
// File permissions:
// drwxr-xr-x 2 www-data root 4096 Mar 27 10:12 44ahj34k578adfhq238iqdn7VB
// -rw-r--r-- 1 www-data root 5056 Mar 27 10:13 XXXXX.html
したがって、ファイル名はユーザー名の後に付けられますか? – Terry
いいえ、XXXは自分のデータをここで匿名化したものです。 –