CGI General

Return to Labo.

  • 環境
    CGIプログラムを組む場合,まず、自分の管理するサイトが、どんなサーバなのかを知る必要が有るのだ。これを知らないと、折角Perlを使ってCGIを組んでも、動かせないって事になりかねないのだ。
    そこで、まずは管理者に確認する,若しくは、同じプロバイダに契約して、ホームページを管理している友達などから情報を集める事が必要なのだ。
    ポイントは,
    • CGIは使えるか?
    • CGIの実行出来るディレクトリは?
    • ASPは使えるか?
    • SSIは使えるか?
    • どんな言語が使えるか?
      Cコンパイラの使い方は?
      perlのパスは?
    位だろうか?
    • ASPとは、Active Server Pageの略で、WindowsNT等のサーバには、許可しているものが多いらしい。HTML文書の中に、VBScriptという言語で、JavaScriptの様に記述する事で、CGIを実行する事が出来るものだ。
    • SSIとは、Server Side Includeの略で、CGI自体は、PerlやC等で同じ様に書くのだが、CGIプログラムの呼び方自体が、HTML文書のタグを使って行われ、結果は、そのHTML文書に埋め込まれて出力されるので、出力する内容が若干異なる。
    上記2つのタイプは、かなり特殊な例と考えて良いので、俺達が個人的にホームページ契約して、当面出会うサーバは、perlメインのCGIって事になると思う。勿論,SSI使えるサーバで、perl使えないって事は無いだろうし、C言語が使えれば、しめたものなのだが、Cコンパイラを使うには,一旦telnet等でloginしなければならないし、コンパイラ自体も結構なメモリリソースを必要とするし・・ファイルに対するアクセスが強力な分,何でも出来てしまうという事もあって、リソース的にも,トラフィック的にも、サーバ側が嫌がる事をするので、大抵のサーバは許可していないと思う。

  • CGIの例題
    ASPやSSIについては、まだ修行中って事にして、ASPもSSIもCコンパイラも無い状態で、Perlだけで造る英語版BBSプログラムの例を一つ挙げておく,基本的過ぎて、実用に耐えるとは思えないけど、俺がどんな風に、CGIを設計しているのかを知っていてもらうのも良いかな?
    • その1,初期計画メモ

      つまり、概要をメモしておく訳だ,CGIは、状態から状態への遷移が肝だから、今、自分が造ろうとしているCGIが、どんな状態を持ち、どの様な起動条件で、どちらの状態へ遷移するかをメモっておくと、後の作業が楽になるのだ。勿論,自分の分かる書き方で良い。

    • その2,処理フロー概要

      最初の計画を見ながら、CGI全体の処理の流れを考える。今回の例では、状態は2つで、表示内容は、同一であるため、メッセージが指定された場合のみデータファイルのUPDATEを行って表示すれば良い。

    • その3,処理フローに従って作成

      その2で造った処理フローに従って、肉付けを行う。各部分の処理内容が、手に取る様に分かると思う。この方法で組み上げると、実際エラーは少ないので、いきなり組んでいくよりは、ずっと近道だと思う。

    • その4,仕上げ

      スクリプトという性格から、コメント行はなるべく削除する方が良い。一旦コンパイルされるとしても、コメント行を読み飛ばす時間もかかる事をお忘れなく。また、ファイルに対して書き込みを行う場面では、この例の様に、アクセス権を取得してからアクセスする様にした方が良い。

    使用例