Вам нужно перехватить «намерение» пользователя перед тем, как передать ему запрошенные файлы.
Есть несколько способов сделать это. Поскольку у вас уже есть интерфейс для ссылки (QR-код), вы можете использовать его, чтобы сначала отправить пользователя на первую «страницу счетчика» по URL-адресу www.example.com/serve.php?f=data/data1.pdf
(это будет URL-адрес, закодированный в QR-коде. )
Файл будет выглядеть так:
<?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 будет перенаправлять ВСЕ трафик c из папки 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 для чтения и вывода содержимого файла (это будет медленнее, чем прямое обслуживание файла. )