目次
動作環境
サーバー: さくら 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()で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をブラウザで表示することができます。