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


File Download hit counter 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;
}

有没有一种方法可以将html表单与post方法结合使用?然后创建一个接收表单名称或按钮名称的函数file_counter_inc((?或者可以使用Javascript onclick方法?哪个接收php函数?P.s不知道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((方法之后,如何强制下载?

您可以创建一个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>