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 来读取并吐出文件的内容(这比直接提供文件要慢)
- 1 回答
- 0 关注
- 128 浏览
添加回答
举报