2013-04-28 38 views
0

我有一個鏈接下載<a href="http://website/filename.pdf">Download</a>,我希望每次有人點擊下載我可以插入數據庫total_downloads + 1。 對於插入到數據庫中,我通常使用如何在點擊<a> href鏈接後插入數據庫?

<form method="POST"> 
<input type="submit" name="download" value="Download"> 
</form> 

然後

if (isset($_POST['download'])) {...} 

但我不知道如何在表格點擊下載按鈕後觸發下載。

+0

你有兩種選擇:使用jQuery調用(上單擊)是遞增的數量PHP服務的下載,或者使用基於ID(類似於http://website/get_file.php?file = filename.pdf)服務靜態文件的PHP頁面,同時也增加了數據庫中的值。 – Tallmaris 2013-04-28 11:53:56

回答

0

要提交按鈕的工作就像一個HTML鏈接添加onclick屬性提交按鈕

<input type="submit" onClick="parent.location='http://website/filename.pdf'" 
name="download" value="Download"> 
+0

根據用戶連接,服務器和瀏覽器的響應時間,這不能保證下載被觸發,並且如果鏈接被打開,則可能發生表單不發送,因此計數不起作用。 – 2013-04-28 11:53:30

1

的快速簡便的方法是:

header('Location: http://website/filename.pdf'); 

爲可通過參數,你可以多一點控制使用該代碼:

header('Content-Type: application/pdf'); 
header('Content-Disposition: attachment; filename="somename.pdf'); 
header('Content-Length: '.filesize($filepath)); 
readfile($filepath); 
0
<a href="http://website/filename.pdf" onclick='$.post("name_of_page.php", {download: "Download"});'>Download</a> 

我不確定報價。

1

關於kgm的答案(這是絕對正確的),您應該確保下載的文件相當小,因爲readfile()會將所有文件內容讀入內存,這可能導致內存耗盡。爲了避免這種情況,看看在這個網站上用戶貢獻「readfile_chunked」:http://php.net/manual/de/function.readfile.php

歡呼:)