CGI活用講座第7回、CGI作成編(2)です。
CGI活用講座、第7回は、作成編です。
ダウンロード&テストは、教材DownLoad です。
CGI活用講座→第7回に進んでください。
ダウンロードした教材は、アップロード用です、基礎講座を参考に、Perlのパスをサーバにあわせてください。
では、CGI活用講座第7回の開始です。
前回の予告どおりに、エラー処理を含めて、最大保持数、最大表示数、投稿時間の記録、を出来るようにしました。
一度に表示出来る件数は、5件に設定、保持するログ数は50に設定、URL以外の未入力にも対応、後は、タグに対応する事、ログの削除機能、レスをつける機能くらいですか?
次のログを表示する機能も必要ですね。
先の機能はこれくらいで、CGIファイルを説明します。
CGIファイル名「katuyou8.cgi」
今回は、コメントをかなり増やしましたので、やっている事は判ると思います。
初期設定
CGI.pm及びjcode.plの使用宣言
ログ保存ファイル名、保存ファイル数、表示ファイル数を設定します。
サーバから、現在時刻を読み出して、ログに記録します。
$yearは年ですが、+1900で、年を西暦にあわせます。
sprintfは、数値を文字列に変換するコマンドです。
年・月・日・時・分を組み合わせて、時刻表示を整えます。
出力開始
ここから暫らくは前回と同じです
CGIのヘッダー出力
HTMLのヘッダー出力
入力欄
36行目から、print <<"end"分以下、タブを使わずに、ベタ打ちにする事。
表題を「簡易表示板Ver1」に変更しました。
CGIファイル名を「7」に変更、その他変更なし。
data処理
お名前部分をチェックして、ミス送信をチェックしています。
お名前が無いログを記録しない為の処置で、読み出しのみ実施します。
出力終了
こちらが、正常終了時のフッターです。
ここからサブルーチン
sub data書込
ログの保存サブルーチンです。
data取り出し
サーバから、各変数に読み出します。
日本語code変換
日本語ドメインとかもありますから、総てに、日本語コード変換を設定しています。
入力チェック
入力チェックを加えました、URL以外に入力不備をチェックし、エラーにしました。
ファイルオープン
この書式は、初めて知りました。
!は否定のはず、開けなければエラー表示ですか、これは便利。
<IN>はファイルハンドルを利用して、全文コピーできます。
Record数の取り出しも変わってますね。
此処の変換は、コメント内に改行が入ったままだと、Recordが求まらない為の処理。
"<>"を区切り文字にしよう、KETWEBさんの真似です、しかしこれは便利だ。
unshiftは、先頭に挿入です、これなら逆順処理が不用になる。
ログの書き込み処理、この場合全文上書き保存ですが、追記用に開く事も可能。
sub data表示
ここでも開いて読み込んで直ぐに閉じてます。
処理の競合を避ける為にファイルを開いたままにはしません、いずれ、ファイルロックが必要になるでしょう。
ファイル数など常時変化する物として、対応を考える必要が有りますね。
ここでは、現在時刻を同時に記録するようにしています。
書き込み要求があってから時刻を読み出しますから、大丈夫でしょう。
最大表示数で、表示を打ち切る処理。
{ last }が、打ち切り命令です。
ログの表示部分、必要回数繰り返し表示になりますね。
[ } ]の数に注意しましょう。
foreachと、subで、2つ並びます。
エラー処理
$_[0]で引数を受け取り、表示して強制終了。
HTMLフッターを出力して、exitで強制終了させてます。
毎回、同じような説明文になりますが、繰り返しが大事なので、もう少しお付き合いくださいね。
CGI活用講座、第7回を終了します。
|