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