WordPress|PDF閲覧制限。記事ページを経由しないとPDFが見られないようにする方法

WordPress|PDF閲覧制限。記事ページを経由しないとPDFが見られないようにする方法

WordPressで製作する会員サイトにおいてPDFファイルをログインユーザーしか見られないようにという依頼がありました。
PDFファイルのURLを直接たたかれると表示されてしまうのはマズいということで以下の方法で対応した。

概要

方法1:

文書(PDF)に直接アクセスできないように.htaccessに記述を加える

WordPress|PDF閲覧制限。記事ページを経由しないとPDFが見られないようにする方法

方法2:

記事ページに設置してある文書(PDF)のリンクをクリックしないとPDFを開けないようする

WordPress|PDF閲覧制限。記事ページを経由しないとPDFが見られないようにする方法

これにより以下2点をクリアしないと文書(PDF)の閲覧ができないようにした。
文書(PDF)を開いた後は印刷するなり保存するなり自由となる。
・ログインしている会員
・記事ページを経由している

上記2点をクリアしてない場合や直接URLにアクセスしてきた場合に403エラーが表示される。

実装にあたり用意するのは以下ファイル

・.htaccess
・single.php
・check.php
・sample.pdf

用意

PDFファイル(sample.pdf)とcheck.phpは同じディレクトリ内に置く
今回はテーマファイル内に設置した
※これ重要

実装1:PDFファイル(sample.pdf)に直接アクセスできないように.htaccessに記述を加える

編集するファイル

.htaccess

以下の内容を書き加える

実装2:セッションで記事ページを介さないとPDFを開けない

編集するファイル

single.php

▼暗号を仕込む

<?php get_header(); ?>の上に以下の内容を書き加える

▼暗号が合っているか確認するページ(check.php)へのリンクを設置

実装3:記事ページからのアクセスかを判断するページを作成

作成するファイル

checkn.php

◆暗号が合ってるか確認する

暗号があっていたらPDFを開く
「flg」の暗号が「ok」だったらPDFを開くってイメージ

以上のことにより文書(PDF)ファイルに制限をかけることができた。

ここからの課題

ここから文書(PDF)をどんどん登録していった時の対応になる。
こちらについては実装をしていないが、以下の方法で対応可能と思っている。

①文書PDFを格納するディレクトリを1つとし、そこに格納されるようにする
②文書PDFと同じ場所にcheck.phpを設置する
③記事一覧ページのリンクURLにパラメータをつける
④パラメーターをsingle.php→check.phpと経由させファイル名を動的にする

以上

 

補足

以下ページを参考にするとPDFのダウンロード制限方法も知ることができます。