ページを動的(ダイナミック)に作り出す

トップ > プログラミング研究 > 画面を動的につくる
一つ前にもどる 目次にもどる 次のページへ

画面を動的(ダイナミック)に作り出す

前回で、Webプログラムの仕組みの概要は理解できたのでは、、、と思います。そこで、ここでは簡単に毎回違う内容を表示するページを作ってみましょう。早速、サンプルを示したいと思います。

01: #!/usr/local/bin/perl
02:
03: # ここで、サーバーから日時の情報を取得します。
04: ($sec,$min,$hour,$day,$mon,$year,$week) = localtime(time);
05: $mon++;
06:
07: # 時間帯によってメッセージを分けるための処理です。
08: $message="Mid night!";
09: if ($hour >= 6){$message="Good morning!";}
10: if ($hour >= 12){$message="Good afternoon!";}
11: if ($hour >= 18){$message="Good evening!";}
12:
13: # ここからHTMLの表示です。
14: print "Content-Type: text/html\n\n";
15: print "<html><head><title>test</title></head>";
16: print "<body>";
17: print "今日は$mon月$day日です。<br>\n";
18: print "今は$hour時$min分です。<br>\n";
19: print "$message";
20: print "</body></html>";
21:
/ 22: __END__

*左端の番号は便宜的に付けた行番号です。

プログラムの効率云々を言われるとつらいので、あまり突っ込まないで下さい。ですが、このプログラムを起動すると今日の日付と時刻、そして、時間帯によってメッセージが変わるページを作ることができます。

プログラムの解説 - サーバーの時間を取得

個別にプログラムの解説を簡単にしますと・・・

01:#!/usr/local/bin/perl

これは、前回も書きましたが、Perl本体が置かれているサーバーの場所です。

04: ($sec,$min,$hour,$day,$mon,$year,$week) = localtime(time);
05: $mon++;

timeはPerlの中でも特別な変数で、サーバーの時刻を返してくれます。ただ、timeの中身を表示させてみるとわかるのですが、このままでは人間が読める時間になっていません。正確にはUTC(国際協定時間)である1970年1月1日0時0分0秒からの累積秒数が返されるらしいのです。

これを自分で処理してもいいのですが、Perlで簡単に変換してくれる関数が「localtime()」です。これを更に、$sec=秒 $min=分 $hour=時 $day=日 $mon=月 $year=年 $week=曜日 ・・・というそれぞれの変数に格納します。ただ、なぜか月についてはカレンダーよりも1だけ少ない数字になるので、すぐあとに、 $mon++; と1足しています。( $mon++ とは $mon = $mon + 1; の省略系です。)

ここからが、実際に書き出されるHTMLとなります。
14行目の「Content-Type」は前回でましたが、ヘッダー情報として必要でしたよね?これに続いて、HTMLの文法どおり、普段書いているような形式で書き出します。

14: print "Content-Type: text/html\n\n";
15: print "<html><head><title>test</title></head>";
16: print "<body>";
17: print "今日は $mon$day 日です。<br>\n";
18: print "今は $hour$min 分です。<br>\n";

ただ、17行目を見ると、「print "今日は $mon 月 $day 日です。<br>\n";」となっており、print命令の中に、先ほどの時間を格納した変数が入っています。これが、表示されるときには、展開されて、今日の日付として書き出されます。たとえば、$mon = 10 , $day = 3 だとすると、画面上は「今日は10月3日です。」と表示されます。

ほとんどのプログラムでは、このようにして処理結果をHTML形式で表示させているんですね。

ここからが、動的(ダイナミック)に表示が変わる部分です。

08: $message="Mid night!";
09: if ($hour >= 6){$message="Good morning!";}
10: if ($hour >= 12){$message="Good afternoon!";}
11: if ($hour >= 18){$message="Good evening!";}
  ・・・
19: print "$message";
20: print "</body></html>";

最終的には「print "$message"」で表示をするのですが、その内容が、先ほどの時間 $hour によって変わります。結果として、

  • 0時~6時には「Mid night!」
  • 6時~12時には「Good morning!」
  • 12時~18時には「Good afternoon!」
  • 18時~24時には「Good evening!」

というように、時間に応じて表示を替えることができます。簡単ですね。

今回のサンプルプログラム

実際のサンプルを動かしているので、「こちら」をクリックしてみてください。(別窓)

一つ前にもどる 目次にもどる 次のページへ
(2003/6/9 by あいまい)

トップ > プログラミング研究 > 画面を動的につくる

日時: 2008年01月24日 19:16
newsingに投稿BuzzurlにブックマークBuzzurlにブックマークlivedoorクリップに投稿 Choixにブックマーク イザ!ブックマーク このエントリーを含むはてなブックマーク
トップに戻る
このエントリーの所属カテゴリ: プログラミング研究
このエントリーのタイトル:ページを動的(ダイナミック)に作り出す



copyright © 2000-2008 all rights reserved
あいまいモード・コム - rss2.0 atom
newsingに投稿BuzzurlにブックマークBuzzurlにブックマークlivedoorクリップに投稿 Choixにブックマーク イザ!ブックマーク このエントリーを含むはてなブックマーク