ホームページ >バックエンド開発 >PHPチュートリアル >SSIの使い方を詳しく解説(2)_PHPチュートリアル
2.インクルードコマンド
Include コマンドは、他のドキュメントから現在解析されているドキュメントにテキストや画像を挿入できます。これは SSI 全体の鍵です。 Include コマンドを使用すると、1 つのファイルを変更するだけでサイト全体が即座に更新されます。
Include コマンドには 2 つの異なるパラメーターがあり、間違ったパラメーターを使用してサイトを更新すると、本来の目的を達成できないだけでなく、大量のエラー メッセージが表示されます。
Virtual: はサーバー側のドキュメントへの仮想パスを与えます。例:
$#@60;!--#include virtual="/includes/header.html" --$#@62;
サイトのコンテンツをより合理的に整理するために、ユーザーはルート ディレクトリに include サブディレクトリを作成して、すべてのインクルード ファイルを保存できます。 Virtual パラメーターは、含めるべきものが仮想ファイルであること、つまり、ファイルと現在解析されているドキュメントが同じディレクトリーに存在せず、別のディレクトリーに保管されていることをサーバーに通知できます。サーバーは、このパラメータの値に基づいて、ルート ディレクトリ内の include サブディレクトリを検索します。この方法を使用すると、HTML ドキュメントに含まれるすべてのファイルを 1 つのディレクトリに配置し、異なるページをそれらの関係に応じて異なるディレクトリまたはサブディレクトリに保存できます。サーバーがどのドキュメントを解析しても、エラーを生成することなく、含まれているファイルを見つけることができます。
しかし、解決しなければならない小さな問題があります。通常、いくつかの TITLE タグと META タグをページに追加します。すべてのページが同じヘッダー ファイルを呼び出すように規定すると、柔軟性が非常に低くなります。このような問題が発生した場合、ユーザーは 2 つのインクルード ファイルを使用できます。1 つは TITLE タグの前のコンテンツを設定し、もう 1 つは META タグの後の部分を設定し、2 つのインクルード ファイルの間にカスタム コンテンツを追加できます。例:
$#@60;!--#include virtual="/includes/header1.html" --$#@62;
$#@60;TITLE$#@62;ページのタイトル$#@60;/TITLE $#@62;
$#@60;LINK rel = STYLESHEET href = "http://domain.com/styles/my.css" Type = "text/css" $#@62;
$#@60; META NAME = "説明" CONTENT = " ページの説明"$#@62;
$#@60;META NAME = "キーワード" CONTENT = "ページのキーワード" $#@62;
$#@60;!- -#include virtual="/includes/header2.html" --$#@62;
ここにページコンテンツを配置します
$#@60;!--#include virtual="/includes/footer.html" --$#@62;
上記のことから、ページ内にヘッダーとフッターを含めることで、サイト更新の作業負荷が大幅に軽減されることがわかります。しかし、ページの最終更新時刻など、一部のコンテンツを動的に表示したい場合はどうすればよいでしょうか?問題ありません。インクルードされたファイルを .html サフィックスを付けて保存すると、インクルードされたファイル内で他のインクルード ファイルを呼び出すことができます。
File: Give? 現在のディレクトリの相対パス。「../」は使用できず、絶対パスは使用できません。例:
$#@60;!--#include file="header.html" --$#@62;
これには、各ディレクトリに header.html ファイルが含まれる必要があります。もちろん、この方法を使用することは、すべてのページを更新することよりも簡単ではありませんが、ユーザーが 1 つまたは 2 つのファイルのみを更新する場合には、それでも非常に便利です。たとえば、HTML に不慣れなユーザーに Web サイト上のニュース ページを直接変更させたくない場合は、そのユーザーに別のテキスト ファイルを更新させてから、そのファイルを HMTL ドキュメントに含めることができます。そうすれば、HTML が壊れることはありません。オリジナルのページと更新されたコンテンツを同時に提供し、両方の長所を生かします。
3.エコー:
Echo コマンドは次の環境変数を表示できます:
DOCUMENT_NAME: 現在のドキュメントの名前を表示します。
$#@60;!--#echo var="DOCUMENT_NAME" --$#@62;
表示される結果は次のとおりです:
index.html
DOCUMENT_URI: 現在のドキュメントの仮想パスを表示します。例:
$#@60;!--#echo var="DOCUMENT_URI" --$#@62;
表示される結果は次のとおりです:
/あなたのディレクトリ/あなたのファイル名.html
ウェブサイトの継続的な開発に伴い、URL アドレスがますます長くなり、頭痛の種となることは間違いありません。 SSIを使えば全て解決します。 Web サイトのドメイン名と SSI コマンドを組み合わせて、完全な URL、つまり
を表示できるためです。http://YourDomain$#@60;!--#echo var="DOCUMENT_URI" --$#@62;
QUERY_STRING_UNESCAPED: クライアントから送信されたクエリ文字列をエスケープせずに表示します。すべての特殊文字の前にエスケープ文字「」が付いています。例:
$#@60;!--#echo var="QUERY_STRING_UNESCAPED" --$#@62;
DATE_LOCAL: サーバーの設定されたタイムゾーンの日付と時刻を表示します。 config コマンドの timefmt パラメータを組み合わせて出力情報をカスタマイズできます。例:
$#@60;!--#config timefmt="%A、%B の %d、年 %Y" --$#@62;
$#@60;!--#echo var= "DATE_LOCAL" --$#@62;
表示される結果は次のとおりです:
2000年4月15日土曜日
DATE_GMT: この関数は、グリニッジ標準時に基づいて日付を返すことを除いて、DATE_LOCAL と同じです。例:
$#@60;!--#echo var="DATE_GMT" --$#@62;
LAST_MODIFIED: 現在のドキュメントの最終更新時刻を表示します。同様に、これは SSI で非常に実用的です。次の単純なテキスト行を TML ドキュメントに追加すると、ページ上に更新時間を動的に表示できます。
$#@60;!--#echo var="LAST_MODIFIED" --$#@62;
CGI環境変数
SSI 環境変数に加えて、echo コマンドは次の CGI 環境変数も表示できます:
SERVER_SOFTWARE: サーバーソフトウェアの名前とバージョンが表示されます。例:
$#@60;!--#echo var="SERVER_SOFTWARE" --$#@62;
SERVER_NAME: サーバーのホスト名、DNS エイリアス、または IP アドレスが表示されます。例:
$#@60;!--#echo var="SERVER_NAME" --$#@62;
SERVER_PROTOCOL: HTTP/1.0など、クライアントリクエストで使用されるプロトコル名とバージョンを表示します。例:
$#@60;!--#echo var="SERVER_PROTOCOL" --$#@62;
SERVER_PORT: サーバーの応答ポートを表示します。例:
$#@60;!--#echo var="SERVER_PORT" --$#@62;
REQUEST_METHOD: GET、HEAD、POSTを含むクライアントのドキュメントリクエストメソッドを表示します。例:
$#@60;!--#echo var="REQUEST_METHOD" --$#@62;
REMOTE_HOST: リクエスト情報を発行したクライアントホスト名が表示されます。
$#@60;!--#echo var="REMOTE_HOST" --$#@62;
REMOTE_ADDR: リクエスト情報を発行したクライアントのIPアドレスを表示します。
$#@60;!--#echo var="REMOTE_ADDR" --$#@62;
AUTH_TYPE: ユーザーの本人確認方法を表示します。
$#@60;!--#echo var="AUTH_TYPE" --$#@62;
REMOTE_USER: 保護されたページにアクセスしたユーザーが使用したアカウント名が表示されます。
$#@60;!--#echo var="REMOTE_USER" --$#@62;
4.Fsize: 指定したファイルのサイズを表示します。configコマンドのsizefmtパラメータを組み合わせて出力形式をカスタマイズできます。
$#@60;!--#fsize file="index_working.html" --$#@62;
5.Flastmod: 指定したファイルの最終更新日を表示します。configコマンドのtimefmtパラメータを組み合わせることで出力形式を制御できます。
$#@60;!--#config timefmt="%A、%B の %d、年 %Y" --$#@62;
$#@60;!--#flastmod file= "file.html" --$#@62;
ここでは、flashmodパラメータを使用して、ページ上のすべてのリンク先ページの更新日を表示できます。方法は次のとおりです:
$#@60;!--#config timefmt=" %B %d, %Y" --$#@62;
$#@60;A HREF="/directory/file.html"$#@62 ;File$#@60;/A$#@62;
$#@60;!--#flastmod virtual="/directory/file.html" --$#@62;
$#@60;A HREF ="/another_directory/another_file.html"$#@62;別のファイル$#@60;/A$#@62;
$#@60;!--#flastmod virtual="/another_directory/another_file.html" - -$#@62;
表示される結果は次のとおりです:
ファイル 2000 年 4 月 19 日
別のファイル 2000 年 1 月 8 日
おそらく読者の中には、2 つのリンクは非常に複雑でまったく便利ではないと考える人もいるかもしれません。実際、ページ上に 20 以上のリンクがあり、各リンクが定期的に更新されている場合、blastmod を使用して変更日を表示していることがわかります。
6.実行
Exec コマンドは CGI スクリプトまたはシェルコマンドを実行できます。使用方法:
Cmd: /bin/sh を使用して、指定された文字列を実行します。 SSI が includesNOEXEC オプションを使用する場合、このコマンドはブロックされます。
Cgi: CGIスクリプトの実行に使用できます。たとえば、次の例では、サーバーの cgi-bin ディレクトリにある counter.pl スクリプトを使用して、各ページにカウンターを配置します。
$#@60;!--#exec cgi="/cgi-bin/counter.pl" --$#@62;このニュースには合計