2. CGI+SSIで日付(年)を自動更新する方法
まず、次のCGIを用意します。
my $year = (localtime(time))[5] + 1900;
print "Content-type: text/html\n\n";
print $year;
たった4行のCGIです。このCGIは、実行すると「現在の年」を表示します。
ファイル名は何でも構いませんが、ここでは「 getyear.cgi 」としておきましょう。
●CGIソースの説明:
1行目: Perlの位置を示しています。お使いのサーバによっては /usr/local/bin/perl などに修正しないと動かない場合があります。
2行目: 現在の年を取得しています。
3行目: CGIで文字を表示させたい場合に必須の記述です。
4行目: 得た年を表示させる記述です。
次に、HTMLファイル中(年を表示させたい場所)に、以下のようなSSIの記述を加えます。
このように記述することで、この位置に「getyear.cgi」を実行した結果が挿入されます。 つまり、年が表示されることになります。
もし、HTMLファイルとは異なるディレクトリ(フォルダ)にCGIを配置したのなら、以下のようにディレクトリ名を含めて記述します。 (※1つ上の階層にあるcgi-binディレクトリに置いた場合の例)
以下のようにHTMLを記述しておけば、年が自動更新されるCopyright表記になります。
これを表示すると、次のように表示されます。
※以下は、表示例です。実際にこの記事中でCGIやSSIを動かしているわけではないので、下記では常に「2006」が表示されます。
年表記は、閲覧者がアクセスした日付の年が自動的に使われます。
サーバの日付が使われるため、閲覧者の環境には一切依存しません。
<注意>
※何も表示されない場合:
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以外でも、とにかく「現在の年を表示したい」という箇所にならどこでも使えます。 ぜひ試してみて下さい。