文件下载点击计数器PHP,MYSQL

时间:2014-04-30 13:36:41

标签: javascript php mysql

我是编程和Web开发的新手。所以请放轻松我。

右。我的问题是我有一个用户将从网站下载的文件。我想要做的是创建一个跟踪下载次数的函数。我在显示当前计数方面没有问题。

如何在进行新点击后更新Mysql数据库?

所以这是我的链接:

<a href="downloads/<?php echo $website->temp_link ?>"> Download </a>

这是我的计数器(检索已下载的次数):

<h6 class="downloaded-count text-center"> Downloaded: <?php echo file_counter() ?></h6>

档案柜台:

function file_counter(){
    $db = DB::getInstance();
    $query = $db->query("SELECT temp_downloads FROM templates");
    if(@$query->count()){
        foreach($query->results() as $query_run){
            $valid_count = $query_run->temp_downloads;
        }
    } return $valid_count;
}

有没有办法用post方法使用html表单?然后创建一个函数file_counter_inc(),它接收表单名称或按钮名称?或者也许使用Javascript onclick方法?哪个接收php功能?请不要知道javascript是否可行


更新

好的我在用户点击按钮后想出了如何增加Mysql字段。另一个问题出现了....这就是我所做的。看着波纹管代码。我现在如何强制下载?我无法将文件放入表单中,因为该方法现在是PHP_SELF。所以我不能在那里放置另一种方法。

现在这是我的HTML。

<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
    <input type="submit" value="Download" name="download_counter">
</form>
<p class="text-center"> Downloaded: <?php echo file_counter() ?> </p>

这是file_counter_inc()方法:

function file_counter_inc($tempID){
    $db = DB::getInstance();
    $query = $db->query("UPDATE templates SET temp_downloads = temp_downloads + 1 WHERE temp_id = '{$tempID}'");
}

Php使用Post方法知道是否点击了按钮。

if( isset($_POST['download_counter']))
{
file_counter_inc($website->temp_id);

}

如何在执行file_counter_inc()方法后强行下载?

1 个答案:

答案 0 :(得分:0)

您可以创建一个PHP函数来处理下载请求,并在函数内增加计数器,例如,创建download.php并将请求的文件作为GET参数传递:

file_counter_inc();     // <-- The increment happens here

$file_url = $_GET['file_url'];
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary"); 
header("Content-disposition: attachment; filename=\"MyFile\""); 
readfile($file_url);

然后输出如下的下载链接:

<a href="download.php?file_url=downloads/<?php echo $website->temp_link ?>"> Download </a>