2

ダウンロード可能な PDF ドキュメントの URL をユーザーに見えないようにして、他の場所からアクセスできないようにしようとしています。ページの左下 (マウスオーバーしたとき) から URL を非表示にし、ブラウザーを開いたときにブラウザーのアドレス バーから URL を非表示にする必要があります。すべてのブラウザで動作する必要があります。

私のHTMLは次のようになります。

<a href="http://www.example.com/files/pdf/a34501.pdf">View PDF</a>

リンクは次のようになります。

PDFを見る

その理由は、ユーザーが自分のドキュメントをダウンロードできるようにコードを提供する必要があるためですが、URL を見ることができれば、他の人のドキュメントを簡単にダウンロードできます (「a34501.pdf」部分の数字を変更するだけで済みます)。

JavaScript 関数を使用して URL を暗号化する方法や、外部 PHP ファイルを使用する方法について読んだことがあります。しかし、私はそれを行う方法がわかりません。

ありがとう。

4

2 に答える 2

6

URL を非表示にすると、技術にあまり詳しくないユーザーは困惑しますが、ファイルをダウンロードする意思があり、技術的な知識がほとんどないユーザーは困惑します。ファイルをコード (または有料の壁) で非表示にする必要がある場合は、PHP スクリプトを使用できます。ユーザーを認証し、対応するファイルを吐き出します。小さな例は次のとおりです。

if($validUser)
{
    $path = $fileName;
    $size = filesize($path);
    $fp = fopen($path, "rb");
    $content = fread($fp, $size);
    fclose($fp);

    header("Content-length: ".$size);
    header("Content-type: application/octet-stream");
    header("Content-disposition: attachment; filename=".$fileName.";" );
    echo $content;
}
exit();

これは、ファイルがサーバーに物理的にあることを前提としていますが、データベースまたはその他の記憶媒体にある場合は変更できます。もちろん、ユーザーがそのファイルをダウンロードする権利を持っているかどうかを最初に検証する必要がありますが、これはあなた次第です。

于 2013-07-08T18:57:54.740 に答える
2

php スクリプトを使用してドキュメントを提供しながら、php がユーザーのセッション情報などを認証できるようにすることができます。

プロセスは次のようになります。

  1. ユーザーは一意のコードを入力します (ユーザーを検証するために必要な追加の認証の後)。
  2. 次のような一意のドキュメント リンクが生成されます。http://domain/download.php?file=58afg71057ga82157(例)
  3. download.php保存されたセッション情報に対してユーザー要求を検証します。すべてがチェックアウトされた場合、ファイル header() を送信し、ファイルの内容を渡します。

この基本的なファイル ダウンロードのチュートリアルでは、この方法でファイルを提供するための基本を説明します。この基本的なチュートリアルを改善する必要がありますが、プロセスがどのように機能するかについてのアイデアが得られるはずです.

提案:

  • ユーザーごとに一意の「キー」を使用します (同じユーザーが再ダウンロードできるようにします)。また、
  • 一度だけダウンロードできる使い捨てキー。また、
  • キーの使用を「許可」する必要があるかどうかがわかるように、ユーザー認証を要求します。
  • ダウンロードするファイルを見つけるために「filename.ext」を使用しないでください。名前をセッションに保存するか、データベースに保存されている一意の識別子を使用してください。
  • サンプル スクリプトを単にコピー ペーストしないでください。多くの場合、非常に安全ではありません。
于 2013-07-08T18:57:45.967 に答える