0

さて、私は自分のサイトにダウンロードリンクジェネレータを作成しようとしています。それが意味するのはこれです:

    • ユーザーが「listX」と書き込むと、サイトは特定のディレクトリ内のすべてのファイルを一覧表示します
    • すべてのファイルには番号があります(0からnまで)
    • ユーザーが次のように入力した場合:「download5」など
    • ユーザーをダウンロードスクリプトにリダイレクトします
    • スクリプトは、ユーザーがポップアップするダウンロード「ボックス」を持つようにします

私は最初、すべてのファイル名で配列を作成し、次にその配列内の位置を「Xのダウンロード」コマンドに使用できると考えました。

そのため、ユーザーをダウンロードスクリプトにリダイレクトすると、ユーザーがダウンロードしたいファイルの名前を持つ変数がダウンロードスクリプトに「POST」され、結果としてヘッダーが変更されます。

だからここに私の2つの質問があります:

1)-ユーザーの入力に応じてダウンロードスクリプトをどのように変更しますか?2)-入力フィールドはすでに「$ _ SERVER ['PHP_SELF']」で他の目的に使用されているので、フォームなしで変数を「POST」する方法がわかりませんか?

これは私の簡単なダウンロードスクリプトです:

<?php
header('Content-disposition: attachment; filename=huge_document.pdf');
header('Content-type: application/pdf');
readfile('huge_document.pdf');
?>

前もって感謝します !

4

1 に答える 1

1

何も入力させないでください。ダウンロードするたびに、クリックしたリンクを作成します。リンクのURLには、ダウンロードの一意の識別子を含むクエリ文字列が含まれます。このようなもの:

<a href="/path/to/downloadscript.php?id=5">Down file #6</a>

downloadscript.php$_GET次に、スーパーグローバルからIDを取得し、そこから移動できます(例で説明した配列を使用)。

<?php
$download_id = (int) $_GET['id']; // 5
$files = array(
    file1.pdf,
    file2.pdf,
    file3.pdf,
    file4.pdf,
    file5.pdf,
    file6.pdf  // This is the file they'll get
);

$filename = $files[$download_id];

// get the file name from your array or database
header('Content-disposition: attachment; ' . filename=$filename);
header('Content-type: application/pdf');
readfile($filename);
?>
于 2012-04-09T23:52:18.443 に答える