2013-04-28 39 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

欢呼:)