- ベストアンサー
CGIについての基本的な理解と使い方
- CGIはサーバー側のプログラム起動のための仕組みで、WEB開発において重要な役割を果たします。
- CGIはPHPやPerlを使って起動させることが一般的で、JavaScriptのように記述するわけではありません。
- CGIを理解することで、WEB開発においてより高度な機能を実現することができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> ・CGIプログラムはウェブサーバがクライアントからのリクエストに応じて起動する。 > ・CGIプログラムへの情報の入力は、 > コマンドライン引数、環境変数、標準入力によって行われる。 > ・プログラムが標準出力に出力したデータは、 > ウェブサーバを経由してクライアントに送られる。 > ・CGIプログラムはHTMLを出力するケースが圧倒的に多い。 http://ja.wikipedia.org/wiki/Common_Gateway_Interface と解説されていますから,CGIとは何か?を端的に言うと, ・コマンドプロンプト画面において環境変数やキーボードによって入力データを与えられるプログラムならすべて,それをWebブラウザ→Webサーバへのデータ送信と同等に扱うことができる ・コマンドプロンプト画面に文字出力できるプログラムならすべて,Webサーバ→Webブラウザへのデータ送信と同等に扱うことができる という仕組みを実現するためにWebサーバに用意された機能を指します。 したがって,コマンドプロンプト画面で入出力をおこなうプログラムであれば言語を問わずCGIプログラムにできるのですが, 現実にCGIプログラムを記述する言語として圧倒的に普及しているのはPerlということになります。 > HPの中でどういう風に使用すればいいのでしょうか。 HTML「の中で」は使用しません。 拡張子.htmlのファイルの中に静的なHTML文字列を記述しておくのではなく, プログラムの実行結果としてHTML文字列を動的に生成して出力するのがCGIプログラムの働きですから。
その他の回答 (1)
- root139
- ベストアンサー率60% (488/809)
CGIの場合、Webサーバは対象のプログラムを起動してその出力を返すことになります。 ですので、javascript はHTMLの中で読込んだり書いたりするのに対し、CGIはプログラムの中でHTMLを出力する形になります。 下記は、「Hello」と表示するだけの Perl の簡単なCGIプログラムです。 例) ------------------------------------ #!/usr/bin/perl -w print "Content-type: text/html\n\n"; print "<html><head></head><body>Hello</body></html>"; ---------------------------------------- なお、サーバの状況・設定によって使える言語は異なりますが、一般的なレンタルサーバでは Perl が多いようです。 また、PHPはWebサーバのモジュールを使う方が一般的ですが、CGIとして動かすことも出来ます。 「CGI 入門」などで検索すれば、解説しているサイトがたくさんヒットしますから、それらを参考にされるとよいですよ。 http://www.tohoho-web.com/wwwcgi.htm
お礼
回答していただきありがとうございます。 ・CGIはHTMLを出力 ・Perlの簡単なCGIプログラム と言う事と、上記のURLを参照させていただいたのですが、 CGIはPerlやPHPなどの言語を呼び出すプログラムの名前ということで実際にはHTMLの中で書いたりはしないということでしょうか。 HTML内で記述するのはPerlやPHPと言った言語でCGIはurlに.cgiとなっている。 この考え方でいいのでしょうか。 フォームの入力の画面で.cgiとなってないサイトがたくさんあるため少し混乱してます。 CGI 入門などでもっと勉強してみます。 回答ありがとうございました。
お礼
回答ありがとうございます。 > HTML「の中で」は使用しません。 拡張子.htmlのファイルの中に静的なHTML文字列を記述しておくのではなく, これが知りたかったのです。 HTMLの中では使用しないんですね。 ありがとうございます。 すごくすっきりしました。 > プログラムの実行結果としてHTML文字列を動的に生成して出力するのがCGIプログラムの働きですから。 難しくてよく分かりませんが、プログラムの結果を出力する。これがCGIプログラムということなんですね。 回答していただいて本当にありがとうございます。