ファイルをインクルードする (IIS5)


  サーバー側インクルードディレクティブ





  • "サーバー側インクルード" ディレクティブを使用すると、Web サーバーがファイルを処理する前にほかのファイルの内容をそのファイルに挿入することができます。
  • ASP では、この機構を持つディレクティブとして 「#include のみ」を実装しています。
  • .asp ファイルにファイルを挿入するには、次の構文を使用します。
  •   
    
    <!-- #include virtual | file ="filename" --> 
    
      

  • キーワード 「virtual」 とキーワード 「file」 は、ファイルをインクルードするときに使うパスの種類を表し、「filename」 はインクルードするファイルのパスと名前を示します。
  • インクルードされる側のファイルに特別なファイル名拡張子を付ける必要はありませんが、ほかの種類のファイルと区別するために、一般的なプログラミングの慣習に従って 「.inc」 という拡張子を付けることをお勧めします。


  •   キーワード Virtual を使用する


  • キーワード virtual は、"仮想ディレクトリ" で始まるパスを指定するときに使用します。
  • たとえば、Footer.inc という名前のファイルが仮想ディレクトリ /Myapp に存在する場合、次の行を記述したファイルに Footer.inc の内容が挿入されます。
  •   
    
    <!-- #include virtual ="/myapp/footer.inc" -->
    
      


      キーワード File を使用する


  • キーワード file は、"相対" パスを指定するときに使用します。
  • 相対パスでは、インクルードする側のファイルのあるディレクトリがパスの起点になります。
  • たとえば、ディレクトリ Myapp にインクルードする側のファイルがあり、ファイル Header1.inc が Myapp\Headers にある場合、次のように記述すると、Header1.inc がファイルに挿入されます。
  •   
    
    <!-- #include file ="headers\header1.inc" -->
    
      

  • インクルードされる側のファイルのパス Headers\header1.inc が、インクルードする側のファイルに対して相対的に指定されていることに注意してください。
  • この #include ステートメントを含むスクリプトがディレクトリ /Myapp に存在しない場合、ステートメントは正しく動作しません。

  • インターネット インフォメーション サービス スナップインで [親のパスを有効にする] オプションをオンにしている場合は、キーワード file を構文 (..\) と共に使用して、親ディレクトリ (1 つ上のディレクトリ) のファイルをインクルードすることもできます。

  •   インクルード ファイルの場所


  • ASP は、インクルードされるファイルがどこに存在していても、そのファイルの変更を検出し、次回ブラウザからこのファイルをインクルードする .asp ファイルを要求されたとき、そのファイルのコンテンツを挿入します。
  • ただし、通常、インクルードするファイルが同じアプリケーションまたは Web サイト内に存在する場合は、インクルードするファイルをセキュリティ保護する方が簡単です。
  • セキュリティを強化する場合には、インクルードするファイルを \Includes などのアプリケーション内の別のディレクトリに置き、適切な (Web サーバーの) 実行アクセス権だけを設定することをお勧めします。
  • [特に指定しない限り、Web サーバーの読み取りアクセス権がすべてのファイルに設定されます。ただし、ユーザーにインクルードするファイルのコンテンツを見せないようにするには、Include ディレクトリに対する読み取りアクセス権を無効にします。]

  •   ファイルをインクルードする際のヒントと注意事項


  • 「インクルードされる側のファイルが、ほかのファイルをインクルードすることもできます」
  • .asp ファイルでは、同じファイルを何度もインクルードすることができます。
  • ただし、これは #include ディレクティブがループを発生させない場合に限ります。
  • たとえば、ファイル First.asp がファイル Second.inc をインクルードする場合、Second.inc が First.asp をインクルードすることはできません。
  • また、ファイルがそのファイル自体をインクルードすることもできません。
  • ASP はこのようなループやネストのエラーを検出し、エラーメッセージを表示して、要求された .asp ファイルの処理を停止します。
  • ASP は、スクリプト コマンドを実行する前にファイルをインクルードします。
  • 「したがって、スクリプト コマンドを使って、インクルードされるファイルの名前を作成することはできません」
  • たとえば、次のスクリプトではファイル Header1.inc は開けません。これは、変数 name にファイル名が代入される前に、ASP が #include ディレクティブを実行しようとするためです。
  •   
    
    <!--  This script will fail -->
    <% name=(header1 & ".inc") %> 
    <!-- #include file="<%= name %>" -->
    
      
      
    
    スクリプト コマンドおよびプロシージャは、スクリプトの区切り記号 <% と %> の間
    HTML タグ <SCRIPT> と </SCRIPT> の間
    または HTML タグ <OBJECT> と </OBJECT> の間に完全な形で含まれている必要があります
    
      

    「つまり、インクルードする側の .asp ファイルでスクリプトの区切り記号を開き、 インクルードされる側のファイルで区切り記号を閉じることはできません。」
    間違った書き方
      
    
    <!-- This script will fail -->
    <%
      For i = 1 To n
        statements in main file
        <!--  #include file="header1.inc" -->
      Next
    %>
    
      
    正しい書き方
      
    
    <% 
      For i = 1 to n
        statements in main file
    %> 
    <!--  #include file="header1.inc"   -->
    <% Next %>
    
      

  • ASP スクリプトがインクルードするファイルに、インクルードしているスクリプトで使用されない関数および変数が多数含まれている場合は、使用しない構造体によってリソースが必要以上に占有されてしまうため、パフォーマンスに悪影響を与え、最終的には Web アプリケーションの拡張性を低下させる可能性があります。
  • そこで通常は、不必要な情報が含まれている 1 つまたは 2 つの大きなインクルード ファイルをインクルードするのではなく、インクルード ファイルを複数の小さなファイルに分割し、サーバー側スクリプトで必要とするファイルのみをインクルードすることをお勧めします

  • 場合によっては、HTML の タグを使用して、サーバー側ファイルをインクルードする方が適していることがあります。
  • たとえば、次のスクリプトでは、サーバーが相対パスにより実行可能なファイルをインクルードしています。
  •   
    
    <SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="Utils\datasrt.inc"></SCRIPT>
    
      

  • 次の表では、仮想パスまたは相対パスにより SRC 属性を持つファイルをインクルードするときの正しい構文を示します
  • パスの種類 構文
    相対 SRC="Path\Filename" SRC="Utilities\Test.asp"
    仮想 SRC="/Path/Filename" SRC="/MyScripts/Digital.asp"
    仮想 SRC="\Path\Filename" SRC="\RegApps\Process.asp"




    yahoo  google  MSDN  MSDN(us)  WinFAQ  Win Howto  tohoho  ie_DHTML  vector  wdic  辞書  天気 


    [aspVarious]
    claudebot
    24/03/29 20:19:20
    InfoBoard Version 1.00 : Language=Perl

    1 BatchHelper COMprog CommonSpec Cprog CprogBase CprogSAMPLE CprogSTD CprogSTD2 CprogWinsock Cygwin GameScript HTML HTMLcss InstallShield InstallShieldFunc JScript JScriptSAMPLE Jsfuncs LLINK OldProg OracleGold OracleSilver PRO PRObrowser PROc PROconePOINT PROcontrol PROftpclient PROjscript PROmailer PROperl PROperlCHAT PROphp PROphpLesson PROphpLesson2 PROphpLesson3 PROphpfunction PROphpfunctionArray PROphpfunctionMisc PROphpfunctionString PROsql PROvb PROvbFunction PROvbString PROvbdbmtn PROvbonepoint PROwebapp PROwin1POINT PROwinSYSTEM PROwinYOROZU PROwindows ProjectBoard RealPHP ScriptAPP ScriptMaster VBRealtime Vsfuncs a1root access accreq adsi ajax amazon argus asp aspSample aspVarious aspdotnet aw2kinst cappvariety centura ckeyword classStyle cmaterial cmbin cmdbapp cmenum cmlang cmlistbox cmstd cmstdseed cmtxt cs daz3d db dbCommon dbaccess dnettool dos download flex2 flex3 flex4 framemtn framereq freeWorld freesoft gimp ginpro giodownload google hdml home hta htmlDom ie9svg install java javaSwing javascript jetsql jquery jsp jspTest jspVarious lightbox listasp listmsapi listmsie listmsiis listmsnt listmspatch listmsscript listmsvb listmsvc memo ms msde mysql netbeans oraPlsql oracle oracleWiper oraclehelper orafunc other panoramio pear perl personal pgdojo pgdojo_cal pgdojo_holiday pgdojo_idx pgdojo_ref pgdojo_req php phpVarious phpguide plsql postgres ps r205 realC realwebapp regex rgaki ruby rule sboard sc scprint scquest sdb sdbquest seesaa setup sh_Imagick sh_canvas sh_dotnet sh_google sh_tool sh_web shadowbox shgm shjquery shvbs shweb sjscript skadai skywalker smalltech sperl sqlq src systemdoc tcpip tegaki three toolbox twitter typeface usb useXML vb vbdb vbsfunc vbsguide vbsrc vpc wcsignup webanymind webappgen webclass webparts webtool webwsh win8 winofsql wmi work wp youtube