ワードプレスで会員制のサイトを作成しましたが、PDFはログインしていなくても見れる状態のままでした。
今回はログインしていないと、PDFの閲覧ができない様にしていきます。
目次
.htaccessでアクセスを制御
まずはpdfが入っているフォルダに以下の.htaccessUPして、アクセスを拒否するようにします。
<Files ~ "\.(pdf)$"> deny from all </Files>
PDFのリンクをphpファイルに差替え
各ページに違うPDFが配置されており、PDFファイルは以下の様にカスタムフィールドを利用し指定していました。
echo "<a href=\"https://sample.com/pdf/".(get_field("pdf")." \">".get_the_title( '' )."PDFを表示する</a>");
これを以下の様に書き換えます。
echo "<a href=\"https://sample.com/pdf.php?no=".(get_field("pdf")." \">".get_the_title( '' )."PDFを表示する</a>");
そして、pdf.phpとファイルに以下を記載することでPDFが表示されるようになります。
<?php require ($_SERVER['DOCUMENT_ROOT'] . '/CMS/wp-load.php'); $pdf = htmlspecialchars($_GET['no'], ENT_QUOTES, 'UTF-8'); if (is_user_logged_in()){ header("Content-Type: application/pdf"); readfile($_SERVER['DOCUMENT_ROOT'].'/pdf/'.$pdf); exit(); } ?>
コメント