2

私は現在、管理者がさまざまなドキュメント (pdf、doc、docx、xls) をアップロードして後でダウンロードできるようにする PHP Web サイトを作成しています。これらは、管理者がログインした後にのみアクセスできます。この時点まで、これを行うために、Web ルートの上にファイルを保存し、PHP を使用して PHP スクリプトを介してファイルにアクセスし、提供していたため、ファイルへの直接アクセスを妨げていました。 . これは機能しますが、すべてのブラウザーで常に正しい結果が得られるとは限らないファイルのダウンロード用に PHP を介して正しいヘッダーを設定することに依存しているため、理想的な方法とは思えません。ファイルがどこにあるかを知っていれば、ファイルが公開されないようにする他の方法は実際には見当たりません。

公開してはならない Web サーバーにファイルを保存して提供するために、通常はどのようなプロセスを使用しますか?

4

1 に答える 1

1

サンプル PHP:

<?php
    if (TRUE === $_SESSION['logged_in']) {

    }

    $file = '/full/path/to/useruploads/secret.pdf';

    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, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
?>
于 2012-07-12T11:40:02.640 に答える