2012-03-30 11 views
2

私はいくつかのPDFを無料でダウンロードできる小さなウェブサイトを持っています。 StatCounterを使用して、ページの読み込み回数を確認します。また、私のPDFダウンロード数も表示されますが、ユーザーが自分のWebサイトからリンクをクリックしたダウンロードだけが考慮されます。しかし、PDFへの「外部」アクセス(たとえば、Google検索から直接)には何がありますか?どのようにそれらを数えることができますか? StatCounterなどのツールを使用する可能性はありますか?サーバー上でファイル(PDFなど)にアクセスした回数

ありがとうございました。

+1

mod_rewriteでapache - redirect * .pdfリクエストをPHPスクリプトに使用する場合。カウンタをインクリメントして、実際のP​​DFコンテンツを読み取り、ブラウザに送信します。 – strkol

+0

@strkolありがとう!このリダイレクトコマンドがどのように表示されるべきかの例を私に教えてください。 – Ivan

答えて

1

の.htaccess(download.phpする* .PDF要求をリダイレクト):

RewriteEngine On 
RewriteRule \.pdf$ /download.php 

download.php:

<?php 
$url = $_SERVER['REQUEST_URI']; 
if (!preg_match('/([a-z0-9_-]+)\.pdf$/', $url, $r) || !file_exists($r[1] . '.pdf')) { 
    header('HTTP/1.0 404 Not Found'); 
    echo "File not found."; 
    exit(0); 
} 

$filename = $r[1] . '.pdf'; 
// [do you statistics here] 
header('Content-type: application/pdf'); 
header("Content-Disposition: attachment; filename=\"$filename\""); 
readfile($filename); 
?> 
0

サーバーから要求を取得する方法を作成する必要があります。

phpを使用している場合は、おそらくmod_rewriteを使用するのがベストでしょう。 .netを使用している場合は、HttpHandlerです。

リクエストを処理し、statcounterを呼び出してから、pdfコンテンツをユーザーに送信する必要があります。

1

を使用して、ファイルにアクセスした回数を確認できます。プロバイダがアクセスログとログアナライザソフトウェアにアクセスできるかどうかをホスティングプロバイダに問い合わせてください。 PHPで

1

、それが(未テスト)のようになります。

$db = mysql_connect(...); 
$file = $_GET['file']; 
$allowed_files = {...}; // or check in database 
if (in_array($file, $allowed_files) && file_exists($file)) { 
    header('Content-Description: File Transfer'); 
    header('Content-Type: application/pdf'); 
    header('Content-Disposition: attachment; filename='.basename($file)); 
    header('Content-Transfer-Encoding: binary'); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate'); 
    header('Pragma: public'); 
    header('Content-Length: ' . filesize($file)); 
    ob_clean(); 
    flush(); 
    mysql_query('UPDATE files SET count = count + 1 WHERE file="' . $file . '"') 

    readfile($file); 
    exit; 
} else { 
    /* issue a 404, or redirect to a not-found page */ 
} 
+0

GET変数の代わりにPDOやパラメータ化されたクエリを使用し、mod_rewriteを使用する方がURLがより自然に見えるようになるでしょう。 –

関連する問題