フォームについて
フォームとCGIについて
操作説明
  問合せやアンケートなどでは名前やメールアドレスを入力させるためにフォームの機能が利用される場合があります。
フォームは、ユーザーに書き込みをしてもらい、その情報をCGIスクリプトに渡します。
フォームではCGIを使わなくてもフォームに書き込まれた情報をメールで受け取るようにすることができますが、通常のメールと同じ方式で送信されるので、電子メールのアドレスが受信者に公開されたり、フォームのデータが暗号化されずに送信されたりするなどの影響が出ます。また、送信側はブラウザから呼び出されるメーラーの送信設定をしておく必要もあります。
フォームから送られてきたメールは、「URLエンコード」されているので、そのままでは内容を読む事ができません。URLエンコードを通常の日本語に変換するソフトが必要となります。
以上の事から、CGIスクリプトを使用しないフォームは、あまり実用的ではないとも言えまが、CGIスクリプトの使用にあたってはプログラムの知識が必要となります。

CGIとは?

CGIとは『Common Gateway Interface』の略です。Webサーバが、Webブラウザからの要求に応じて、プログラムを起動するための仕組みです。従来、Webサーバは蓄積してある文書をただ送出するだけでしたが、CGIを使うことによって、プログラムの処理結果をそのページに反映したり、メールとして送出したりといった処理ができます。こうした機能を使うことによって、ユーザーの入力に応じてのインタラクティブなページ作りが可能になります。CGIはどのような開発言語でも使用できますが、実際にはPerlなどがよく使われています。
このように非常に便利な機能を持っているCGIですが、使いこなすにはWebサーバやプログラミングに関する深い知識が必要で、また、ちょっとしたミスがシステム全体に被害をもたらす可能性を持っているので注意が必要です。

CGIの仕組み

CGIは、CGIを呼び出すためのHTMLファイルと、CGIプログラムで構成されます。ホームページ上でなんらかの操作(リンクボタンをクリックしたり、フォームのサブミットボタンが押されたり)があったときに、CGIプログラムを呼び出すことができます。このCGIプログラムはWebサーバ内で動作し、その実行結果をブラウザに表示したり、メールとして送信したりできます。サーバ内でプログラムが動作するCGIは、ブラウザの種類に影響されないのも特徴です。
CGIプログラムが呼び出される一般的なパターンとしては、『フォームによる呼び出し』:フォームからの入力結果を処理します。ショッピングサイトの個人情報登録やメールフォームでのメールの送信、またサーチエンジンなどの検索などもこういった仕組みを使っています。
『CGIへリンクを張って呼び出す』:フォームの入力に限らず、リンクにCGIプログラムのURLを指定して、直接プログラムを呼び出す事も可能です。
『イメージを返すCGIの呼び出し』:アクセスカウンターもCGIプログラムを使っています。アクセスカウンターの場合、CGIプログラムが処理結果に基づいて画像を表示させます。

CGIを使うために

自分のホームページでCGIを使いたい場合は、まず、ホームページを掲載するサーバがCGIの使用が可能か確認する必要があります。また、自分の入会しているプロバイダーのフリースペース等を利用する場合、多くのプロバイダーでは、ユーザーがCGIを自由に使えるようにはしていません。サーバの中でプログラムを走らせることになるCGIは、サーバに少なからぬ負荷をかけることになり、また、プログラムのちょっとしたミスが大きなトラブルを引き起こすこ場合があるためです。
CGIプログラムを作るのは自分でも、実際に動かすのは、そのページにアクセスしてきた誰かです。その人がどんな操作をするか、どんな値を入力するかはわかりません。たとえば、予想外の入力値に対しての処理が完全にされていなかったり、ある条件で無限ループになってしまうようなバグのあるプログラムを走らせた場合、Webサーバのシステムに異常な負荷がかかり、最悪の場合はサーバがダウン(停止)してしまったり、サーバのデータ、またはディスク自体が破壊されてしまうことがあります。バグで自分のマシンを破壊してしまうだけならともかく、契約しているWebサーバやプロバイダーのWebサーバを破壊してしまったとなると、そのプロバイダーの全会員、ひいてはそこにアクセスしている世界中の人に迷惑がかかってしまうことになります。
CGIは、サーバのセキュリティホール(安全管理上の欠点)になりやすいということを知り、十分な注意を払わなければなりません。
CGIは、使っているWebサーバのサーバソフトやOSに依存した作り方をする必要があります。そのため、CGIを活用するにはホームページを掲載するWebサーバに関する知識が必要となります。