PHPとScriptによるテンプレートファイルの表示の違い
PHP と Script では、どちらもテキストファイルの読み込みができます。
ですので、ちゃんと読み込みに成功した場合、見た目は同じになります。
でも実は、PHP と Script には色々と違う点も存在します。
テンプレートファイルの読み込み方の違い
PHPは、ユーザーがサーバーにアクセスしてきた時、サーバーがテンプレートファイルを読み込み、ファイルの中に書き込んでからユーザーに見せます。
PHPファイルの読み込みエラーが起きると、そこから下が真っ白になってしまいますが、これは、サーバーが順序良くテンプレートファイルを読み込んでいっている証拠です。
一方、Scriptの場合、ユーザーが利用中のブラウザが ページファイルに書かれてある Script を動かして、テンプレート用のテキストファイルを書き出します。
PHP の場合、サーバーがテンプレート用のファイルを順良く書き出しながら表示していますが、Script の場合、後からブラウザでテンプレート部分を表示させています。
ですので、Scriptで読み込んでいる部分は、ブラウザのScriptの設定を切っている場合、表示されずにポッコリ抜け落ちる形で表示されます。
(PHPのように、そこから先に処理が止まることはない)
この違いが読み込み方に現れ、できることとできないことの差につながってきます。
PHPは重ねられるけど、ScriptとPHPは重ねられない
処理は重くなってしまいますが、実はPHPは重ねられます。
例えば、
ページ内に記入するコード
<?php include("aaaaaa.txt"); ?>
このPHPコードで、aaaaaa.txt と言うファイルを読み込みます。
そして、さらにその aaaaaa.txt と言うファイルでは、 bbbbbb.txt と言うファイルを読み込む設定にします。
■ ページファイルで PHPを使って aaaaaa.txt を読み込む
■ さらに aaaaaa.txt でもPHPを使って bbbbbb.txt を読み込む
<?php include("AAA.txt"); ?>の中身
<div>
※※ 関連情報のページ ※※
<?php include("bbbbbb.txt"); ?>
■ さらに関連情報を見る
</div>
<?php include("BBB.txt"); ?>の中身
<ul>
<li>https://exe.com/test.html
<li>https://exe.com/test1.html
<li>https://exe.com/test2.html
<li>https://exe.com/test3.html
<li>https://exe.com/test4.html
<li>https://exe.com/test5.html
</ul>
処理は重くなってしまいますが、PHPの重ねがけでも正常に表示できます。
では、Script による bbbbbb.txt の読み込みならどうでしょうか?
<?php include("aaaaaa.txt"); ?>
■ ページファイルで PHPを使って aaaaaa.txt を読み込む
■ さらに aaaaaa.txt でも Script を使って bbbbbb.txt を読み込む
<?php include("AAA.txt"); ?>の中身
<div>
※※ 関連情報のページ ※※
<script>
$(function() {
$("#bbb").load("bbbbbb.txt");
});
</script>
<noscript><p>Java Scriptが無効になっています</p></noscript>
<div id="bbb"></div>
■ さらに関連情報を見る
</div>
<?php include("BBB.txt"); ?>の中身
<ul>
<li>https://exe.com/test.html
<li>https://exe.com/test1.html
<li>https://exe.com/test2.html
<li>https://exe.com/test3.html
<li>https://exe.com/test4.html
<li>https://exe.com/test5.html
</ul>
これも正常に表示できます。
PHPで先にページを表示しておき、ユーザーのブラウザから Script を動かす。
この順序であれば、問題なく作動します。
ですので、PHPコードでAdSenseのテンプレートタグを読み込む形にすれば、正常に作動します。
では、aaaaaa.txt を呼び出すのが PHP ではなく Script ならどうでしょう?
ページには、<?php include("aaaaaa.txt"); ?> ではなく、<script>$(function() {・・・ と書きます。
ページ内に記入するコード
<script>
$(function() {
$("#aaa").load("aaaaaa.txt");
});
</script>
<noscript><p>Java Scriptが無効になっています</p></noscript>
<div id="aaa"></div>
これで aaaaaa.txt と言うファイルは表示できます。
次に、bbbbbb.txt をPHPで読み込むと・・・
<?php include("aaaaaa.txt"); ?>の中身
<div>
※※ 関連情報のページ ※※
<?php include("bbbbbb.txt"); ?>
■ さらに関連情報を見る
</div>
<?php include("bbbbbb.txt"); ?>の中身
<ul>
<li>https://exe.com/test.html
<li>https://exe.com/test1.html
<li>https://exe.com/test2.html
<li>https://exe.com/test3.html
<li>https://exe.com/test4.html
<li>https://exe.com/test5.html
</ul>
これはエラーが出てしまいます。
先程も書きましたように、PHPによる include はページを順序良く読み込んでいくものですから、ページファイルがサーバーによって表示された後から、ブラウザが Script を動かしてテンプレートファイルを読み込んで、さらにサーバーがPHPコードに書かれてあるようにテンプレートファイルを再度 include して読み込むことはできないのです。
Scriptを表示後、PHPコードを再読み込みするようにPHPコードの書き換えをすればできなくもないのかもしれないですが、めんどくさいですし、処理も重くなってしまいます。
(私は玉が悪いな上にズボラなので、これはできないです。orz)
include
ページファイルを表示
↓
Scriptを動かす
↓
もうすでにサーバーがページを表示してしまった後なので、PHPコードは作動しない
ちなみに、Script で aaaaaa.txt を読み込み、さらに Script でbbbbbb.txt を読み込むことは怖くてできませんでした。
(ループ入ったら怖いなと思って。(;´_`;))
ブラウザでの表示の違い
PHPでもScriptでも、どちらもブラウザで読み込みに成功すると同じように表示されます。
ただし、ソースコードには大きな違いが出ます。
PHPの方は読み込んだテキストファイルがそのまんま表示されますが、Scriptの方は Script コードしか表示されません。
ですので、そのままだとソースコードからコピペすることはできません。
先程も書いたように、PHPはサーバーが読み込むものですから、ソースコードにはテンプレートファイルを読み込んだ状態で表示されます。
一方、Scriptはユーザーが使用中のブラウザが読み込むものですから、サーバーのソースコードは Scriptのコード そのままになります。
でも、ディベロッパーツール(開発者用のツール)であれば、Scriptでも読み込んだテキストを表示することができますので、ディベロッパーツールでならコピペが可能です。
(ディベロッパーツールは普通の人はあんまり使わないと思いますので、色んな人から大量にコピペされるのは防げるとは思いますが)
あと、Scriptの方は、ブラウザで Script の設定を切ってしまうと、表示できません。
なので、ScriptがOFFになっている時には、<noscript><p>Java Scriptが無効になっています</p></noscript>を表示するサイトが多いです。
<noscript><p>Java Scriptが無効になっています。すべての機能を表示するには Java Script を有効にして下さい。</p></noscript>
これがないと、サーバーやファイルやコードのエラーで非表示になっているのか、Script を OFF にしているために非表示になっているのかがわからず、サイトを訪れたユーザーが困る可能性があります。
『 Scriptを切っているユーザーには見せないとかけしからん!ヽ(`Д´#)ノ 』 と激怒&インネンをつけられるのを防止するために、<noscript>
に何も書かないオーナーさんもおられるとは思うのですが、私が <noscript> に何も書かれていないページを見て感じるのは、『 あれ?何も表示されないぞ? (;´Д`) 』 だったします。
(サイト閉鎖かエラーかと思う)
Script が OFF の場合でもレイアウト崩れ無くページを表示したい場合には、ScriptOFFでも大丈夫なようにレイアウトを構成すると良いと思います。
逆に、ScriptがOFFの時にはまともに表示できないようにしたい場合は、サイト表示する上で重要な部分を Script で読み込みすれば良いです。
(記事や写真をScriptで読み込む)
ただし、読み込んだテキストファイルは、ダウンローダーやダウンロードソフトなどでダウンロードできてしまうので、テキストファイルは個別にアクセス拒否する必要があります。
# ファイルの直アクセス禁止
# 許可URLを書き換える
# (txt|html|php)を画像ファイルに書き換えれば、画像ファイルの直アクセス禁止もできる
<FilesMatch "\.(txt|html|php)$">
SetEnvIf Referer "https://●●●.●●●/" Ref1
SetEnvIf Referer "https://▲▲▲.▲▲▲/" Ref2
Order Deny,Allow
Deny from all
Allow from env=Ref1
Allow from env=Ref2
</FilesMatch>
また、画像の場合は画面キャプチャー用のソフトでいくらでも複製できてしまいますので、ダウンロード&保存禁止しても意味無かったりします。
次ページ
前ページ
広告
- 【紆余曲折】 サイトをテンプレート化することを決意した
- 【難問解決】 PHPでテンプレートをincludeした
- サイトをPHPでテンプレート化するメリットとデメリット
- PHPとScriptによるテンプレートファイルの表示の違い
- Scriptでサイトをテンプレート化する方法とそのデメリット
- 【使い回し】 複数サイトのテンプレートの共有化について
- 【こんなはずでは】PHPやScriptを使ったテンプレートの注意点
- 【簡単メンテでも問題あり?】<head></head>内をincludeする
- 【静的】 Wordpress とテンプレート化したPHPサイトの違い 【動的】
- 【違う】ホームページビルダー16の付属テンプレートについて【そうじゃない】
- 【速い】 SSIでincludeに成功した!【安定】
- 【難問解決】 SSIのインクルードで圧縮できるか実験してみた
- jQuery で外部ファイルを読み込んだ時に文字化けするのを解消する方法