→ろゆっく コンピュータ資料室←

CGI ミニ講座



CGI って何ですか?

CGIといえば・・・・・・・・ 掲示板、アンケート、チャット、ゲーム、オンラインショッピングなどが思い浮かぶと思います。

では、ホームページ作成で使われる HTML とどこが違うのでしょうか?
 それは、CGI ではオンラインで「書き込み」ができることです。
 例えば掲示板では、そのホームページ作者以外の方でも、いろいろと書き込むことができますね!


CGI と HTML の関係

ホームページを作成するとき、使うのは HTML です。HTML は、どのようにホームページを表示するかを記述した文書です。

HTML は、サーバ(プロバイダのコンピュータ)上に保管(保存)しておいた HTML ファイルをパソコンに受信し、ブラウザで表示します。ですから,JavaScript や FLASH を用いても、ソース(内容)を見ればいつも同じです。ホームページ作者が更新しなければ、いつまでも同じままですね。

CGI は、サーバ(プロバイダのコンピュータ)上で CGI プログラムを実行し、データを処理して、HTML をサーバ(プロバイダのコンピュータ)上で作成します。つまり、毎回のようにソース(内容)の異なるページを作成できるのです。

HTML の場合
サーバー

<------ (1) HTML を要求 <-----

------> (2) HTML を送信 ----->
パソコン

CGI の場合
サーバー

(2) CGI を実行
<----- (1) データを送信 <-------

----> (3) 結果をHTMLで送信 --->
パソコン


サーバ(プロバイダのコンピュータ)で HTML を作成する CGI は HTML とは別物ということです。したがって、HTML と同じ感覚では CGI を作成できません。


CGI を使えないこともあり!

CGI は使い方次第で、あなただけではなく、プロバイダも迷惑をかけてしまうこともあります。また、正しい使い方をしても HTML に比べ処理が重く、サーバーに負荷をかけます。

そのため、CGI の使用を禁止するプロバイダは多く存在します。多くの無料プロバイダは CGI が禁止になっているのは、そのためなのです。
また、CGI が使用できるとしても、その自由度はさまざまで、業者によって違うのです。
例えば、
  • 用意された CGI しか許可されていない。
  • CGI は HTML と別のサーバーに設置する。
  • チャットCGI は設置禁止。
  • ●●●ゲームはサーバーの負荷が大きいため設置禁止。
  • メールなどで CGI を審査して、プロバイダが後日設置する。
などの場合があります。
CGI に関する規約・禁止事項などをよく確認しましょう。


CGI はときには大変危険!

CGI によって誰でも書き込むことができるようになります。
言い方を変えれば、あなたのホームページ領域を、誰でも追加・修正・削除をできるようになるわけです。
善意の方なら良いのですが、悪意を持った人でも同じことができるわけです。

下手な CGI を設置すると痛い目にあってしまうことがあります。
例えば、
  • HTML タグが書き込める CGI は要注意!
     簡単なところでは、フォントや画像のサイズを異常に大きくして、掲示板を読めなくされてしまうこともあります。
    その他にも、HTML タグには危険なものが多数あります。

  • 本来禁止された動作を可能にする便利系ツール
    CGI のなかには、本来プロバイダにない機能を提供してしまう CGI があります


CGI の言語

CGI はテキストベースのプログラムなので、作成や編集が簡単に出来るのが特徴です。

CGI は、その用途に応じて、さまざまな言語で実現できます。したがって、どんな言語で CGI を実現しているのか、教えてあげなくてはいけません。

通常,配布されている CGI は Perl と呼ばれる言語で書かれていることが大半です。
Perl とは以下の頭文字をとっています。
  Practical Extraction and Report Language (実用データ取得レポート作成言語)
  Pathologically Eclectic Rubbish Lister (病的折衷主義のがらくた出力機)

そこで,CGI に「Perl言語です」と教えてあげる必要があるのです。

Perl言語で書かれた CGI ファイル(〜.cgi)をエディターで開くと、先頭行に Perl のパスがあります。
Perl のパスは通常、以下のように書かれています。
  #!/usr/local/bin/perl
または、
  #!/usr/bin/perl

Perl のパスは,CGI に「Perl言語です」と宣言しているのです。これががあることで,このファイルを CGI で実行できるようになります。
したがって、この宣言がが間違っていると、サーバ(プロバイダのコンピュータ)は、なんのファイルかわからないので、「サーバーエラー」というエラーを起こし、CGI は動作しません。

Perl のパスはプロバイダによって違うことがよくありますので、契約書などをみて必ず確認しましょう。


パーミッション(属性)はなんであるの?

インターネットは、たくさんの人が利用しているので、それなりの仕組みが必要です。 その1つにパーミッション(属性,アクセス権,許可権)があります。パーミッションは読み、書き、そして実行できる人を制限します。

なぜ,そんな面倒くさいことをするのでしょう?
理由は、あなたのファイルを他の人が書き換えたり、削除できたら困りますよね?!
例えば、トップページが他の人のページになってしまったり、ホームページ全てが消されていたり・・・・・

そこで、パーミッション(属性)で制限するのです。

あ な た グループ そ の 他
読 み
書 き ××
実 行 ××
読み:ファイルを読み込む権利。(ファイルを見ることを許可する)
書き:ファイルを書き込む権利。(ファイルの作成や修正,削除を許可する)
実行:ファイルを実行する権利。(ファイルを実行することを許可する)

通常、パーミッションはあなたにのみ、読み、書き、実行ができるようになっており、グループ、その他の人には読みだけができるようになっています。
そのため、他の人はあなたのページを見ることはできても、あなたのページを書き換えたりできなくなっているわけです。
しかし、CGI を使うためには、この制限を変更して「誰でも書いていいよ」などの設定にしなくてはいけません。

通常、このパーミッションは、数値で [ 755 ] [ 644 ] などと表現されていています。
→ろゆっく コンピュータ資料室←

(C) Copyright ROYUCK Allrights Reserved