[PHP-users 34747] Re: ロードするCSSファイルを変える

島筒 耕平 k.shimadutsu @ 4qualia.co.jp
2009年 8月 30日 (日) 16:19:11 JST


島筒です。

すいません、山本さんが終了と言われた後からのレスになってしま
うのですが・・・

「ソースを見せない」の対応について、簡単にやるなら以下でしょうか

http://yourhost/index.html

<link rel="stylesheet" href="./css/stylesheet.php" />

http://yourhost/css/stylesheet.php
<?php
if ( !isset($_SERVER["HTTP_REFERER"]) || !preg_match('{^http://localhost/}' ,$_SERVER["HTTP_REFERER"]) ) {
  header("HTTP/1.1 403 Forbidden");
  echo "403 Forbidden";
  exit;
}

$cssfilepath = "/home/xxx/css/stylesheet.css";
// 必要があればここで読み込むファイルを変更する
header("Content-Type: text/css");
echo file_get_contents($cssfilepath);

?>
※一部、西村さんのソースを拝借させていただいております。

上記の対応には、問題があります。
ブラウザがリファラーを送ってくれないと、スタイルシートが適用
されないページが表示されてしまう。
そのため、サイトへアクセスするユーザへは、リファラーを送るこ
とを強要しないといけない。

これで対応できていると思います。


プログラム以外に私が思ったこととして、山本さんはindex.htmlの
linkタグからのリクエストと、/css/stylesheet.phpへURLを直接リ
クエストすることの2つに違いがあるように認識されているように
思います。
(リファラーなどの違いはありますが。)
linkタグによるリクエストも、URLを直接リクエストすることも、
どちらもHTTP(80ポート)を使用してのリクエストに変わりはありま
せん。
違うとしたら、ブラウザが送るヘッダーが違っていることです。
ブラウザが送るものを信じるかなどの問題(今回だと送られてくる
リファラー)は、サイトの方針によるものになります。




以上


┌−
 島筒 耕平
 k.shimadutsu @ 4qualia.co.jp
                    −┘



PHP-users メーリングリストの案内