2. CGI+SSIで日付(年)を自動更新する方法

まず、次のCGIを用意します。

#! /usr/bin/perl
my $year = (localtime(time))[5] + 1900;
print "Content-type: text/html ";
print $year;

たった4行のCGIです。このCGIは、実行すると「現在の年」を表示します。
ファイル名は何でも構いませんが、ここでは「 getyear.cgi 」としておきましょう。

CGIソースの説明:
1行目: Perlの位置を示しています。お使いのサーバによっては /usr/local/bin/perl などに修正しないと動かない場合があります。
2行目: 現在の年を取得しています。
3行目: CGIで文字を表示させたい場合に必須の記述です。
4行目: 得た年を表示させる記述です。

次に、HTMLファイル中(年を表示させたい場所)に、以下のようなSSIの記述を加えます。

<!--#exec cgi="getyear.cgi"-->

このように記述することで、この位置に「getyear.cgi」を実行した結果が挿入されます。 つまり、年が表示されることになります。

もし、HTMLファイルとは異なるディレクトリ(フォルダ)にCGIを配置したのなら、以下のようにディレクトリ名を含めて記述します。 (※1つ上の階層にあるcgi-binディレクトリに置いた場合の例)

<!--#exec cgi="../cgi-bin/getyear.cgi"-->

以下のようにHTMLを記述しておけば、年が自動更新されるCopyright表記になります。

Copyright &copy; <!--#exec cgi="getyear.cgi"--> MyName. All Rights Reserved.

これを表示すると、次のように表示されます。
※以下は、表示例です。実際にこの記事中でCGIやSSIを動かしているわけではないので、下記では常に「2006」が表示されます。

Copyright © 2006 MyName. All Rights Reserved.

年表記は、閲覧者がアクセスした日付の年が自動的に使われます。
サーバの日付が使われるため、閲覧者の環境には一切依存しません。

<注意>
※何も表示されない場合:
CGIが正しく動作していないか、SSIが有効になっていません。 getyear.cgiを直接ブラウザで表示させてみて下さい。エラーになるならCGIに問題があります。 年が正しく表示されていれば、SSIが有効になっていません。 SSIは、(たいていの場合は)HTMLの拡張子を「.shtml」にしないと動作しないので注意して下さい。 CGIがエラーになる場合は、CGIに実行権が付加されているかどうか、FTPソフトなどで確認してみて下さい。

※「an error occurred while processing this directive」と表示される場合:
SSIに問題があります。 CGIの位置やファイル名を誤って記述していないか確認して下さい。 また、サーバによっては、SSIからCGIを呼び出すことを禁じている場合があります。 その場合、この方法は使えません。

うまくいかない場合は、JavaScriptを使う方法で

どうしてもうまくいかない場合は、JavaScriptで済ませてしまう手もあります。
JavaScriptを使った方法は、前のページを参照して下さい。

おわりに

今回は、Copyright表記中の「年」部分を自動的に更新させる方法をご紹介致しました。
Copyright以外でも、とにかく「現在の年を表示したい」という箇所にならどこでも使えます。 ぜひ試してみて下さい。

関連記事



※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。