亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

計算服務器上特定文件的查看次數(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 關注
  • 152 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號