次のコードで .htaccess ファイルを使用しています。
Order deny, allow
Deny from all
Allow from localhost
しかし、画像を表示するときに、画像へのリンクをタグに入れるだけですが、画像が表示されません。
画像を表示して直接アクセスできないようにするにはどうすればよいですか? ファイルの生のバイトをコピーして表示する方法はありますか?
このソース例と同じフォルダにembedded.pngを必ず保存してください。
<?php
function data_uri($file, $mime)
{
$contents = file_get_contents($file);
$base64 = base64_encode($contents);
return ('data:' . $mime . ';base64,' . $base64);
}
?>
<html>
<h1>Embedded Image:-</h1>
<img src="<?php echo data_uri('embedded.png','image/png'); ?>" alt="Embedded image" />
</html>
Content-Type
画像の適切なヘッダーを送信してから、 を使用readfile()
してバイトをストリーミングして出力します。
また、これに URL でファイルパスを使用する場合は、最初にファイルパスをサニタイズして、たとえば/etc/passwd
スクリプトを使用して読み取れないようにしてください。