为了账号安全,请及时绑定邮箱和手机立即绑定

计算服务器上特定文件的查看次数(php)

计算服务器上特定文件的查看次数(php)

PHP
万千封印 2023-07-21 18:23:04
有没有办法计算特定文件在我的服务器上的浏览次数?例如,我在目录data/, data1.pdf,中有一些文件data2.pdf。data3.pdf例如,URL 是https://www.example.com/data/data1.pdf. 如何统计总浏览次数data1.pdf?就我而言,用户通过扫描二维码访问资源。因此,我需要捕获此操作来计算特定资源的视图总数。此外,我需要更新 MySQL 数据库中的计数值,例如data1.pdf:10 个视图、data2.pdf:8 个视图、data3.pdf:6 个视图。最好的方法是什么?
查看完整描述

1 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

在向用户提供她请求的文件之前,您需要拦截用户的“意图”。


有多种方法可以做到这一点。由于您已经有一个链接界面(QR 代码),因此您可以使用它首先将用户发送到 url 处的第一个“计数器页面” www.example.com/serve.php?f=data/data1.pdf(这将是 QR 代码中编码的 url)


该文件看起来像这样:


<?php

  $requested_file = $_GET['f'];

  $conn = //init your connexion

  $conn->execute("UPDATE counters SET counter = counter + 1 WHERE filename = ?", requested_file);

  

  header("Location: "+$requested_file);

  exit;

如果您无法更改链接

在这种情况下,这会有点棘手,因为您仍然想在用户到达文件之前拦截用户,但她已经有了直接链接。


我建议使用一个.htaccess文件将目录中的所有请求重定向到我们的serve.php. 请注意,默认情况下,此 htaccess 文件会将文件data夹中的所有流量重定向到我们的 php 文件,因此您肯定需要做一些额外的工作才能将其集成到您的域中


RewriteEngine on

RewriteBase /                                                              

RewriteCond %{REQUEST_URI}  ^/data     [NC]

RewriteRule ^(.*)$ /serve.php?f=$1 [NC,L,QSA]

并将serve.php更改为:


<?php

  $requested_file = $_GET['f'];

  $conn = //init your connexion

  $conn->execute("UPDATE counters SET counter = counter + 1 WHERE filename = ?", requested_file);

  

  $content = file_get_contents($server_path_to_requested_file);

  header("Content-type: application/pdf"); //change that if you handle multiple files

  echo $content;

  exit;

这里的缺点又是你需要 PHP 来读取并吐出文件的内容(这比直接提供文件要慢)


查看完整回答
反对 回复 2023-07-21
  • 1 回答
  • 0 关注
  • 128 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信