我在同一页面上有很多链接。链接将开始不同的下载。 我想要做的是,当点击链接开始下载时,我还想将iframe位置更改为php页面以增加下载命中计数器。
代码需要在每个链接上的onClick
事件中,因为我在同一页面上有这么多。
我想要这样的事情:
<a href="download001.zip" onClick="iframe.location.href='hits_counter.php?file=download001>Start download 001</a><br>
<a href="download002.zip" onClick="iframe.location.href='hits_counter.php?file=download002>Start download 003</a><br>
<a href="download003.zip" onClick="iframe.location.href='hits_counter.php?file=download003>Start download 003</a><br>
...
必须激活两个事件:下载文件并更改iframe href
答案 0 :(得分:0)
如果你有很多,onClick不是解决方案
使用jquery你可以用这样的东西处理所有这些:
$("a").click(function(){
$.get("hits_counter.php",{ file:$(this).attr("href") });
});
并且不再需要iframe
答案 1 :(得分:0)
您可以提供文件并从服务器端递增计数器。发送文件以供下载的代码如下。所以你的hits_counter.php可以是这样的
$file = $_GET['filename'];
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
//increment counter based on file name
exit;
}
$file = $_GET['filename'];
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
//increment counter based on file name
exit;
}
来源 - http://php.net/manual/en/function.readfile.php