
pdfファイルをメンバーのみに閲覧するには!!
インターネットにおいて、phpによるログインシステムを利用したメンバー用サイトを制作中です。
本サイトにおいて、メンバーのみに、pdfファイルを閲覧できるようにしたいと考えておりますが、pdfファイルへのURLにより、メンバー外の方も閲覧可能となってしまいます。
メンバーのみへ閲覧可能とし、メンバー外の方には、閲覧できないようにする方法はありますでしょうか?
pdfファイルの存在するディレクトリへベーシック認証を設定すれば可能と思いますが、ログインシステムを利用して一回サイトに入ってきていますので、ベーシック認証による再度のユーザID、パスワード入力は、手数を増やしますので、できるだけこの方法は避けたいと考えています。アドバイスをいただけますよう、よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
pdfファイルをウェブからアクセスできない場所に置いて、PHPでそれを読んでContent-Type: application/pdf で出力すればいいと思います。
http://example.com/pdf.php/readme.pdf
とかのURLにして、pdf.phpからはPATHINFOを見てreadme.pdfという名前を得てそれを使ってpdf保管用ディレクトリからファイルを読み出す。
この回答への補足
notnotさん、早速のご回答有難うございます。
pdfファイルをWebからアクセスできない場所において、phpでそれを読んで(phpのreadfile()関数利用)、Content-Type:application/pdfで出力する(phpのheader()関数利用)のですね。
こうしたやり方の知識がなかったものですから、本当に助かりました。なお、notnotさんご回答の「http://example.com/pdf.php/readme.pdfとかのURLにして、pdf.phpからはPATHINFOを見てreadme.pdfという名前を得てそれを使ってpdf保管用ディレクトリからファイルを読み出す。」という部分ですが、少しわかりませんので、追加で質問させてください。pdf.phpがreadme.pdfファイルを読み出すphpファイル、readme.pdfが対象とするpdfファイルと理解しています。
(1)http://example.com/pdf.php/readme.pdfは何でしょうか?readme.pdfをおいたディレクトリの絶対パス(フルパス)でしょうか? pdf.phpファイルにpathinfo('http://example.com/pdf.php/readme.pdf')を記述し、readme.pdfの名前を得てそれを使ってpdf保管用ディレクトリからファイルを読み出すということでしょうか?
勉強不足であり、お手数かけますが、追加アドバイスをいただければ有難く存じます。
No.5
- 回答日時:
#4回答ミスです。
訂正します。スレ汚しすみません。> よって、download.php?file=hoge.phpのように、
↓
よって、download.php?file=hoge.pdfのように、
phpじゃなくてpdfですね。わかるとは思いますが念のため。
No.4
- 回答日時:
#2です。
少し勘違いされてるようなのでいくつか補足とツッコミを・・・
#1さんのウェブからアクセスできない場所にPDFを置くと、
#2のアクセスできるところに置くがhtaccessで制御するという方法。
#1と#2の違いはこの点のみです。
ログインシステムを採用している場合、
普通はPHPを介してメンバーコンテンツにアクセスするので、
私はPDFに直接アクセスされたくないのだと思い回答しました。
#1さんもそう考えての回答だと思います。
> メンバーにはURLによりpdfファイルにアクセス可能としたいということです。
> <FilesMatch>タグによる方法ですと、
> メンバーもURLによりpdfファイルにアクセスできなくなるのではないかと思います。
確かにそうですが、PDFにはログイン済みかどうかを判別する機能はありません。
#1さんのウェブからアクセスできない場所に置くだと、
そもそもURLからアクセスすることができません。
よって、download.php?file=hoge.phpのように、
ログイン済みメンバーかどうかを確かめられるスクリプトを挟む必要があります。
そしてメンバーにはPDFに直接ではなく、
このdownload.phpを介したアクセスをしてもらいます。。
ログインシステムを採用してるということは、そういうことをしてるはずです。
PDFの出力方法は#1さんのを参考にして下さい。
この回答への補足
pnckさん、
補足情報ありがとうございます。
当方の質問の仕方が適切でなかったかも知れませんが、ログインシステムを採用するシステムにおいて、サイトに設置するPDFファイルを、メンバー外の人には閲覧可能とせず、メンバーへのみ閲覧可能とする方法が、わからなかったために質問させていただきました。pnckさん、およびnotnotさんの情報により、その方法を理解いたしました。
PDFファイルをウェブからアクセスできない場所に置き、phpページにて、ログイン済みメンバーが否か、確かめたうえで、本PDFファイルを読み込み表示させるphpプログラムを介し、PDFファイルをメンバーに閲覧させるということですね。
本当に基本的なところを知らなかったため、戸惑っていたのですが、お蔭様でわかるようになりました。有難うございました。
No.3
- 回答日時:
No1です。
http://example.com/pdf.php/readme.pdf というURLにアクセスすると、pdf.php が起動されてそのプログラムから$_SERVER["PATH_INFO"]を参照すると、"/readme.pdf" が入ってます。
従って骨組みだけ書くと、
<?php
認証処理;
$dir = "/PDFの置き場";
$file = $_SERVER["PATH_INFO"]
$fileの文字列が正しいことのチェック(先頭以外に/があるとかは駄目);
$dir.$fileのファイル存在チェック;
header("Content-Type: application/pdf");
echo file_get_contents($dir . $file);
まずはテストとして、これで動くかですね。
<?php
$dir = "/PDFの置き場";
$file = $_SERVER["PATH_INFO"]
header("Content-Type: application/pdf");
echo file_get_contents($dir . $file);
この回答への補足
notnotさん、
わざわざ、コードまでお書きいただきお手数おかけいたしました。
お蔭様で、メンバーのみにPDFファイルを閲覧可能とすることができるようになりました。
notnotさんのコードを参照させていただき、実際には、次のようにさせていただきました。
(1) webからアクセスできない場所においたPDFファイルを読み出すphpプログラム
<?php
header('Content-type:application/pdf');
edho file_get_contents('PDFファイルへの絶対パス');
?>
*上記PDFファイルへの絶対パス情報はレンタルサーバー会社にききました。
(2)他ページにて、テキスト(例えば、「PDFファイルへ」などのテキスト)に上記(1)のページへリンクを張っておく。メンバーは本テキストをクリックすることにより、上記(1)のphpページを起動、そのphpプログラムを介して、PDFファイルを閲覧する。
基礎的なことであっても、自分ひとりでは到底解決できなかったのですが、皆様のお力を借りまして解決することができました。本当にありがとうございました。
No.2
- 回答日時:
htaccessが使えるなら、PDFのあるディレクトリに、
<FilesMatch "\.pdf$">
Order allow,deny
Deny from all
</FilesMatch>
という内容を記述した、.htaccessファイルを作成して下さい。
直接アクセスしたときに403を返すようになります。
この回答への補足
pnckさん、
早速のご回答ありがとうございます。
一点、私の方で記述が不正確であったからかも知れませんが、メンバー以外にはURLによりアクセスをさせませんが、メンバーにはURLによりpdfファイルにアクセス可能としたいということです。<FilesMatch>タグによる方法ですと、メンバーもURLによりpdfファイルにアクセスできなくなるのではないかと思います。
メンバーのみにpdfファイルをアクセスさせるには、先にnotnotさんのご回答がありましたように、pdfファイルをWEBからアクセスできない場所において、phpで本ファイルを読みContent-Type:application/pdfで出力することだと思います。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(IT・Webサービス) WEBサイト内のファイルを探す方法は? 1 2022/11/11 16:38
- ホームページ作成・プログラミング パスワードつきホームページ トップページ以下はどうなる 6 2022/08/16 12:04
- PDF 数日前まで閲覧できていたPDFファイルが閲覧できなかった理由はなんでしょうか。ファイル名が変更された 3 2022/04/11 00:41
- PDF PDFに精通した方に質問。JPEGファイル群を一つのPDFファイルにするときの容量変化について 6 2023/07/23 19:06
- iPhone(アイフォーン) 仕事でPDFファイルをダウンロード、閲覧するのにiBooksを使っていますが、ライブラリに凄い数のフ 2 2022/11/16 07:08
- Excel(エクセル) ファイル一覧表を使ったファイルの移動 5 2022/08/10 15:37
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- Windows 10 だいたいの能力はどのくらいでしょうか 3 2023/03/05 17:18
- その他(ブラウザ) Microsoft Edge(最新版)保存中サイトが全てログオフ状態で困っています! 3 2022/06/15 11:02
- Excel(エクセル) エクセルの設定一覧のようなものは出力できますか? 同じエクセルのファイルを開いた時にチームのメンバー 2 2023/02/16 16:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
日本語のファイルが開けない
-
日本語が文字化けしないよう読...
-
XMLのロードに失敗する
-
リネームについて
-
htmlソースの取得
-
Smartyで吐き出されたhtmlソー...
-
stat failed
-
PHPでFilename cannot be empty...
-
メソッドと配列の処理速度について
-
FTPコマンドでディレクトリごと...
-
PHPのif文でその処理を途中で抜...
-
フォントの色を変えるには?
-
X-ServerにSmartyをインストー...
-
「旭日中綬賞 」とはどんな賞で...
-
自分で書いた.htaccess添削して...
-
filemtimeについて
-
ポータルサイト構築
-
windowsXPでのphpとmySQLの導入...
-
require_once で読み込まれたか?
-
phpのswitch文のcaseで
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPでの別のサーバーのテキスト...
-
2つの画像ファイルが異なるファ...
-
register_globalsについて
-
shift-jisでfgetcsv
-
phpのftp_get()でエラーが出ます。
-
PHPでFilename cannot be empty...
-
独自INIファイルの操作をしたい...
-
ファイルの行数取得
-
XMLのロードに失敗する
-
別のサーバにあるファイルの存...
-
ファイル指定
-
ファイルについて・・・。
-
画像ファイルの添付
-
Zend Framework で大きなファイ...
-
stdinからの処理でメール情報を...
-
AS3外部テキスト読み込み
-
PHPでAPI 出力はCSVを取得する...
-
ファイル名は、数字の「0」(...
-
PHPでテキストファイルかどうか...
-
ファイルの内容の削除【ファイ...
おすすめ情報