2012-04-09 67 views
0

好的,所以我正在嘗試在我的網站上創建一個下載鏈接生成器。 我的意思是這樣的:帶變量的PhP下載鏈接

    • 用戶寫道:「名單X」,該網站列出了一個給定的目錄中的所有文件
    • 每一個文件都有一個編號(從0到n)
    • 當用戶類型:「downloa d 5" 例如
    • 它的用戶重定向到一個下載腳本
    • 腳本使得它使用戶有一個下載的‘盒子’彈出式

我首先想到的是我可以創建與每個文件名稱的數組,然後使用位置在該數組中用於「下載X」命令。

因此,當他將用戶重定向到下載腳本時,具有用戶想要下載的文件名稱的變量將被「POST」到下載腳本中,並且結果會改變標題。

因此,這裏有我的兩個問題:

1) - 如何改變根據用戶輸入的下載腳本? 2) - 輸入字段已用於其他目的與「$ _SERVER ['PHP_SELF']」,所以我不知道如何「POST」變量沒有表單?

這是我簡單的下載腳本:

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

提前感謝!

回答

1

不要讓他們鍵入任何東西。使每個下載鏈接,他們點擊。在鏈接的網址中,您將擁有包含下載唯一標識符的查詢字符串。事情是這樣的:那麼

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

downloadscript.php將從$_GET superglobal獲得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); 
?> 
+0

文件#5'file6。 pdf'。 – 2012-04-09 23:56:06

+0

感謝您的幫助!快速的問題,是否有可能進行大量下載?就像用戶輸入「下載1-5」一樣,它會從ID 1下載每個文件到ID 5. – 2012-04-10 00:07:26

+0

你是什麼意思批量?多次下載一次? – 2012-04-10 00:07:52