[三流君] −−> [ASPで遊ぶ、失敗する] −−> [バックナンバー一覧]
−−> No.020 インクルード ファイルを使ってまとめてみた

インクルード ファイルを使ってまとめてみた


本文(発行内容)


<インクルード ファイルを使ってまとめてみた>

こんにちは、Ken3です。

今回は、
インクルード ファイルを使って
処理をまとめてみたいと思います。

たいした話じゃないので、あまり期待しないでね。

/*
 * 1.同じ処理が入ってるのは、なんかなぁ。。。
*/

In message "感想",
*****8さん wrote...
 >広告見せるならソース見せろ

に反応して、ソースファイルを表示する処理を最近追加しました。

http://www.ken3.org/cgi-bin/test/test017-2.asp
でServer.HTMLEncodeを使用して変換表示、

次に、
http://www.ken3.org/cgi-bin/test/test017-3.asp
では、
Request.ServerVariables("SCRIPT_NAME")を使用して、
関数にまとめてみました。

今後のASPのサンプルの後ろに付けたので、
http://www.ken3.org/cgi-bin/test/test018-1.asp
を実行すると、無事にASPのソースファイルも表示されます。

でも、なんかバカっぽいよね。
      ^^^^^^^^^^^^^^^^^^^^^
えっ、どこが?
広告表示からソース表示に変えたよ。結果とプログラムも見れるし。

そのソースの表示関数が
いつも最後に、それも含めてASPの中身が表示されるジャン。
^^^^^^
なんかまぎらわしいんだよね。

それに、いつも最後に入れてるのって、変だしね。

言われて見れば、、、何か共通で使う方法ってあるはずだから探してみるか。

/*
 * 2.ファイルをインクルードする
*/
ファイルをインクルードって、
聞きなれない言葉かもしれないけど、
好きな位置に指定したファイルを入れた状態にできます。

書き方は簡単で、
<!-- #include file ="header1.inc" -->
これを、ASPのファイルの中に入れておくと、
自動的にheader1.incファイルを読みとって、
中身を挿入してくれます。

簡単に2つのファイルにわけた例を書くと、

-- test020-1.asp  普通のASPファイル
<%@LANGUAGE=VBScript%>
<html>
<head>
<title>インクルードファイルの使用</title>
</head>
<body>
<h2>インクルードファイルの使用</h2>
test020-1.asp<br>
動作仕様:<br>
out_src.incを読み込み、よく使う処理をまとめてみます<br>
さてさて、どうなることやら、、、<br>
<hr>

<% Call OUT_SRC() 'ソースの表示関数を呼ぶ %>

</body>
</html>

<!--  #include file="out_src.inc" -->

---ここまで、

-- ここから、out_src.inc
<% 'ソースの表示関数  SUB OUT_SRC() out_src.incに移しただけ

Sub OUT_SRC() 

  Dim strSCR_NAME

  strSCR_NAME = Request.ServerVariables("SCRIPT_NAME")  '名前を代入

  '見出しの表示
  Response.Write "<HR><b>" & strSCR_NAME & "</b><HR>"
  Response.Write "<PRE>"  'スペースを有効にするため

  ' FileSystemObjectを生成します、、って英文、そのままジャン。
  Set objFS = Server.CreateObject("Scripting.FileSystemObject")

  '*5 スクリプト(strSCR_NAME)を読取専用モードで開きデータを読む
  Set ts = objFS.OpenTextFile(Server.MapPath(strSCR_NAME), 1, True)

  Do While ts.AtEndOfStream = False  'ファイルの終端になってない間ループ
    strDATA = ts.ReadLine   'ファイルからデータを一行を読む
    '*1読み込んだデータをServer.HTMLEncodeで変換表示
    Response.Write Server.HTMLEncode(strDATA)
    Response.Write chr(13) & chr(10)   '改行する
  Loop

  '使ったファイルは閉じようよ
  ts.close

  Response.Write "</PRE>"  'ここまで
  Response.Write "<HR>"    '<HR>で区切る

End Sub  '関数はここまでですよ。

%>
----

と、2つのファイルにわけてあります。

test020-1.asp内の最後、
<!--  #include file="out_src.inc" -->
の記述で、out_src.incが挿入されるので、
同じように処理でき、
処理もまとまってます。

http://www.ken3.org/cgi-bin/test/test020-1.asp
を実行すると少し感覚がわかると思います。



/*
 * 3.別にインクルードファイルは2つでも、途中でも、関数じゃなくても
*/

<!--  #include file="ファイル名" -->
で
別ファイルに記述した関数(命令)
がそのまま簡単に入る感じです。

えっ、関数しか?書いたらダメなの?
なんだぁ、いつも変わるリンク情報やお知らせを書いて共通化したかったのになぁ。

あっ、私の言葉が足りなかったですね、
そのままファイルの内容を読みこむので、
中身はなんでもいいんですよ。
^^^^^^^^^^^^^^^^^^^^^^^^^^^
あと、インクルードの場所は、どこでもいいし、何個でも
*あまりやり過ぎると、逆に見にくくなるので注意かなぁ。

簡単な例を書くと、
頭にお知らせがあるページを作りたい場合、

まず、お知らせ用の共通な.incファイルを作成します
ここでは、名前を、info.incとして、中身を書きます。

-- info.inc
<HR>
今週の目標:<b>アンケート処理をまとめて、説明する予定</b><br>
<a Href="http://www.ken3.org/asp/">
[ASP系メニューへ]</a>
<a href="http://www.ken3.org/cgi-bin/bbs/asp/wforum.cgi">
[質問・感想掲示板]</A>
<a href="http://www.ken3.org/backno/backno_asp_mokuji.html">
[バックナンバー目次]</a>
<HR>
-- ここまで

と、お知らせのコメントとページのリンクを書きました。

-- test020-2.asp で、下記のように使ってます
<%@LANGUAGE=VBScript%>
<html>
<head>
<title>普通の内容をインクルードしてみた</title>
</head>
<body>
<h2>普通の内容をインクルードしてみた</h2>
↓ここから下にテストでinfo.incをインクルードしてみる<br>

<!--  #include file="info.inc" -->

↑上に挿入されてますか?<br>
test020-2.asp<br>
<hr>

<% Call OUT_SRC() 'ソースの表示関数を呼ぶ %>

</body>
</html>

<!--  #include file="out_src.inc" -->

-- ここまで


ポイントは、
↓ここから下にテストでinfo.incをインクルードしてみる<br>

<!--  #include file="info.inc" -->

↑上に挿入されてますか?<br>

の場所で、普通にHTMLタグの記述だけでも入るので、
ヘッダーをまとめたりねフッターをまとめたり、
変更があっても、元ファイルを修正しないで、
インクルードのファイルを修正するだけで
と
活用すれば、管理の幅も広がると思います。

http://www.ken3.org/cgi-bin/test/test020-2.asp
でテストできます。

-- 余談
.inc と 書いてるけど、別に拡張子も何でもOKです。
でもわかり易い名前にして下さい。

/*
 * 4.問題点は?無いの?
*/

へぇ〜、
<!--  #include file="ファイル名" -->
って、使えそうジャン、
でも、問題点はないの?

拡張子.inc、
何も設定してないと、
丸見えなんですよ。

http://www.ken3.org/cgi-bin/test/info.inc
http://www.ken3.org/cgi-bin/test/out_src.inc

をブラウザで見てみると(メールからクリックの自動起動でも)

ねっ、IEでは中身が表示されたでしょ
(か、ダウンロード・保存になると思います)

out_src.inc 今は見られてもいい処理しか入っていないけど、
パスワード管理のASP関係を共通化しようとして、
pas_src.inc なんかにまとめて、
使っていたりする、無頓着な人が居たら、マズイよ。

レンタルサーバーだと、
個々のファイルのセキュリティの設定できないけど、
見られたくないファイルは、
外から見えない場所に置いておかないと
(外から見えない設定しないとね)

今は、気にしなくてもいい話ですが、
頭のスミにでも入れといて下さいね。

/*
 * 5.終わりの挨拶
*/

今回は、
・ファイルをインクルードしてみた
でした。

素朴な疑問あったら、気軽に、
メール、掲示板に書き込んでくださいね。

ASP、VBScript勉強中の三流プログラマーのKen3でした。

フィードバック

ASP系の→[掲示板]←を覗く、質問を書き込む

評価・感想

No.020を読んだ満足度(評価)は?
5満足(参考になった)
4まぁまぁ(一部参考になった)
3普通(どちらとも言えない)
2なんかなぁ(期待と違った)
1不満(読んで損した気分)
作者に感想・質問を送る場合は下記に気軽に書いてください
あなたのお名前(ニックネーム) さん

作者からの返信は、 不用 E-mail で受信したい
*質問・感想はメルマガで紹介する場合があります

三流君の主なリンク先

[アクセスランキング] [サイトマップ] [リンク先・相互リンク先など]
ASPで遊ぶ、失敗する 掲示板 バックナンバー 登録と解除
三流プログラマー 業務の愚痴 掲示板 バックナンバー 登録と解除
VBAで楽しくプログラミング 掲示板 バックナンバー 登録と解除
コンビニのオモテとウラ話 掲示板 バックナンバー 登録と解除
www.ken3.org(サイト内)から Google を利用して、

Ken3の日記(weblog) -- [広告・副収入系] [プログラマー業務の愚痴] [VBA系の話題] [ASP系の話題] [コンビニ系ネタ] [その他]

その他 宣伝広告