忘れないように記録しとこ

カバの樹

file_get_contentsでPDFの設置フォルダを偽装しつつブラウザに展開する

2018年3月7日

動作環境

サーバー: さくら 1G SSD
OS: CentOS 6.5
PHP: 7.0.2
Codeigniter: 3.0.4

 

はじめに

IR情報等のPDFを公開する時に、厳密な時間で公開しないとダメが時があります。(株に影響してしまうので

そういう時は手作業でサーバーにアップロードしていたのですが、人間作業だと忘れてしまうとか、忘れてしまうとか、忘れてしま(ry

そういう事を無くすために、あらかじめサーバーにPDFをアップロードしておいて、ブラウザでのアクセスをベーシック認証で制限します。

そして、file_get_contents()を使い、PDFの設置箇所を偽装しつつ、タイマー機能でPDFを閲覧可能にします。

 

ソース

まずベーシック認証が掛かったファイルをfile_get_contents()を取得してくる方法ですが、これは以前に記事を書きましたので、そちらを参照

https://www.kabanoki.net/855

 

次は本題のfile_get_contents()でPDFを取得する方法です。


// 時間になるまで404を表示する
if(date('Y-m-d H:i:s') > '2018-03-07 16:00:00') {

 $url = "http://hoge.com/pdf/hoge.pdf";

 $basic = array(
  'User-Agent: My User Agent 1.0',
  'Authorization: Basic '.base64_encode('admin:pass'),
 );

 $options = array('http' => array( 'header' => implode("\r\n", $basic ) ));

 $file = file_get_contents($url, false, stream_context_create($options));
 // PDFヘッダーを返す
 header('Content-type: application/pdf');
 echo $file;

}
else {
 // 404ヘッダーを返す
 header("HTTP/1.0 404 Not Found");

}

 

これで、本来のPDFの設置フォルダを偽装しつつ、PDFをブラウザで表示することができます。

  • B!