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()を取得してくる方法ですが、これは以前に記事を書きましたので、そちらを参照

file_get_contentsでベーシック認証の掛かったコンテンツを取得する

 

次は本題の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をブラウザで表示することができます。

  • この記事を書いた人

カバノキ

印刷会社のWEB部隊に所属してます。 WEB制作に携わってから、もう時期10年になります。 普段の業務では、PHPをメインにサーバーサイドの言語を扱っています。 最近のお気に入りはJavascriptです。 Vue.jsを狂喜乱舞しながら、社内に布教中です。

-PHP
-, ,