PDF等閲覧制限 特定ページ経由からのみ閲覧可能に【PHP・htaccess】

PDF等閲覧制限 特定ページ経由からのみ閲覧可能に【PHP・htaccess】

PDFをウェブサイトに置いてユーザーに閲覧させたいけど、特定のページを経由しないと見れないようにしたい」

こんな依頼を受けることが結構あります。

この要望が必要な場面は、

  • 利用規約ページは必ず見て欲しい
  • ユーザーに何らかアクションをしてもらった特典としてPDFを閲覧してもらいたい

などが挙げられますね。

毎回どうやって作ったか思い出しながらやっているので、今日は備忘録として上記要望の実装方法をまとめます。

PHPと.htaccessを利用してPDFの閲覧を制限する

閲覧制限といっても、閲覧するためにIDやパスワード求めるわけではなく、特定ページ経由のときにのみPDFが表示されるようにする仕様です。

通常ウェブサイトにPDFを置いて閲覧させる場合は、下図のようにHTMLにPDFへのリンクを設置して、ユーザーがクリックするとPDFが表示されるようにしますよね。

PDF等閲覧制限 特定ページ経由からのみ閲覧可能に【PHP・htaccess】

ただ、このままでは誰でも閲覧できる状態です。
ここに制限を設けます。

仕様としては、

  • PDFはURL直接入力や直リンクで閲覧できないように.htaccessを利用して閲覧を制限する
  • 特定のページからのアクセスの場合のみ、PDFを表示する

となります。

実装方法

使用するファイルは下記の4つです。

PDF等閲覧制限 特定ページ経由からのみ閲覧可能に【PHP・htaccess】

  • .htaccess – PDFへの直接アクセスを制御
  • checkPermission.php – 特定ページからのアクセスかを判断。OKの場合PDFを出力。
  • index.php – PDFへのリンクを貼る画面
  • test.pdf – 表示するPDF

※今回は同階層にすべて置いてあります。

これらのファイルを用い、下図のような仕組みを実装します。

PDF等閲覧制限 特定ページ経由からのみ閲覧可能に【PHP・htaccess】

今回使ったコードをまとめていきます。

.htaccess – PDFへの直接アクセスを制御

まずは.htaccessを利用してPDFへのアクセスを拒否します。

今回はPDFの制御をしましたが、別のファイルを制御することも可能です。

●●●の部分をtxtなど別の拡張子にします。

ブラウザに直接PDFへのURLを入力して確認します。

表示できていたPDFが”Forbidden”となっていれば正しく動作しています。

PDF等閲覧制限 特定ページ経由からのみ閲覧可能に【PHP・htaccess】

index.php – PDFへのリンクを貼る画面

次にPDFへのリンクを設置するページの作成をします。
ここではPHPでセッションを開始し、$_SESSION[‘permission’]に’true’という文字列を持たせます。

この’true’が設定されているかどうかがこの後の判断材料となります。

リンク先は特定ページからのアクセスかを判断するPHPにしておきましょう。

checkPermission.php – 特定ページからのアクセスかを判断。OKの場合PDFを出力。

index.php内のリンク先がこのPHPファイルになります。

$_SESSION[‘permission’]に’true’が入っているかを確認し、入っている場合はPDFを出力します。
ここではPDFは同階層にあるtest.pdfを想定しています。

$_SESSION[‘permission’]に’true’が入っていない場合はelse内の対処になります。
“//不正アクセスの場合の対処を記述”の部分にはお好きな処置を書いてください。

もし、PDFを出力するのではなく、ダウンロードさせたい場合は、

に差し替えてください。

ただ、この対応の場合はPC以外のスマートフォンなどではエラーになってしまいますのでお気をつけください。

まとめ

以上で、「PDFをウェブサイトに置いてユーザーに閲覧させたいけど、特定のページを経由しないと見れないようにしたい」という要望のプログラムの実装が完了です。

同じような案件でお役に立てば幸いです。

筆者について

筆者について


1982年、東京下町生まれ。
高校卒業後、アメリカへ留学。その後、「アートが根付いた国では絵だけで食えるのか」を確認するため、ドイツベルリンにてアート活動をおこなう。

日本に戻ってからは、コーディング・オーサリング・プログラミングなんかを経て、ウェブディレクターを肩書きにしておりました。現在は独立し、ブログやサイトの運用を軸に、ウェブサイトの企画提案からデザイン・構築まで手広く活動しております。何でも屋です。
制作のご依頼はお問い合わせフォームよりお願いします。

isLog〜イズログ〜では『日々生きること自体が旅』をモットーに、日々の旅を中心に綴っています。

詳しいプロフィールはこちら


feedly

コメントを残す

*