CGIでHTMLを生成する仕組みって一体どうなっているんですか?(例)http://www.octalserve.gr.jp/html/gyoumu/hp/cgi/sample_1/index.html教えてください。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答10件)

id:emueda No.1

回答回数7ベストアンサー獲得回数0

ポイント10pt

ゲストブックとかを作ったことがあるならば分かると思いますが、CGIを使って、データをファイルに出力できますね。

で、sasadaさんが聞いているCGIでは、単にその出力をHTMLにしただけです。

なので、その後、見るときは既に出力されているHTMLを見るだけなので、CGIは使われないと。CGIは出力時にのみ使用。

id:finalvent No.2

回答回数321ベストアンサー獲得回数1

ポイント10pt

URIはほぼダミーです。

HTML生成自体はHTMLがテキストなのでただ文字列処理しているだけです。あとはHTTPヘッダを送出させるくらいですが、これも通常のゲストブックと変わりません。

例のサイトでは、<! tubuyaki for CGI> <! end of tubuyaki for CGI>というコメントをマーカにして文字列置換(あるいは挿入)をやっているのだと思われます。つまり、通常のテキストファイルの置換処理や差し込みの処理と同じです。

id:will0 No.3

回答回数34ベストアンサー獲得回数0

ポイント10pt

CGIと

それを処理するPERL

実行させるHTTPサーバ

送られてきたデータを解釈するブラウザ

とそれぞれの役目を頭に入れておくと

理解しやすくなります。

例のページではhtmlの内部にcgiの出力結果を埋め込む

通常SSIと呼ばれる形が使われてますね。

htmlに埋め込まれたcgi実行命令をサーバが

コールして結果をhtmlにまとめてブラウザに送ります。

ちょっとご質問があいまいなので

この辺にして、何かさらに知りたいことがあれば

ご質問ください。

こんなところで的を得ているでしょうか・・

id:masaomix No.4

回答回数1023ベストアンサー獲得回数1

ポイント10pt

基本的にはCGIというプログラムの中にHTMLの骨組みを持っているんです。たとえば、

print <<”HTML”

<html>

<body>

$no <a href=”mailto:$mail”>>$name</a> $title $date $time <a href=”$hp”><img src=”home.gif”></a>

<blockquote>

$message

</blockquote>

といった骨組みをプログラム(スクリプト)の中に持っていて、$no に書き込み番号、$name に名前・・・・というように必要事項をログファイルから読み込んでくると、これが掲示板の表示部分ということになるわけです。

こうした基本部分に加えて、もし何々だったら何をする、といった条件分岐などのプログラム制御を加えてやると、こうした骨組みを次々と切り替えてHTMLとして出力してやることができますから、変幻自在、なんでこんな複雑なことができるのー、といったページも作れることになるわけです。

id:masaomix No.5

回答回数1023ベストアンサー獲得回数1

ポイント10pt

あ、続けてすいません。masaomixです。先の回答に書いたスクリプト例、最下行に

HTML

っていう一行を書き忘れてたみたい(^-^;

print <<”HTML”; #←セミコロンも忘れたかも(^-^;

  :

  :

HTML

とやると、この間にはさまった部分が

そのまま出力として出てきます。

この間に普通のHTMLファイルをそのまま突っ込んで、

前後にIPアドレスによるアクセス規制などを付けると

嫌な人には見せない隠しページなんていうのも作れます(笑)

id:taichi1410 No.6

回答回数2ベストアンサー獲得回数0

ポイント10pt

たとえば…。

1:Formの入力を受け取る。

2:既存のhtmlを全部メモリ上に読み込む

3:html該当部分を、受け取ったFormの内容に置き換える。

4:sample_1/index.htmlの位置に、メモリ内のhtmlデータを全部テキストファイルとして書き出す。

とかで出来ますね。2は、必ずしもhtmlになっている物を読み込む必要は無くて、ページ内のさまざまな要素を、データベースから持ってきてもいいし、CGIスクリプト内に(ハードに)書かれていてもかまいません。

HTMLを生成するって言うと難しそうですが、HTMLファイルの内容を持ったテキストファイルを書き出すだけだと考えれば簡単では?

動的に書き出すならちょっとだけやり方が違いますが。

id:sasada No.7

回答回数1482ベストアンサー獲得回数133

ポイント20pt

 まずは、このへんから勉強してみてください。

 それとも、このレベルは卒業した上で、ご質問のCGIの解説をご所望なのでしょうか?

id:Oyis

ゲストブックやカウンターなどは自分で作れるぐらいのレベルです。

2003/10/04 22:51:34
id:gaba No.8

回答回数90ベストアンサー獲得回数1

ポイント20pt

http://www.hatena.ne.jp/1065270824

CGIでHTMLを生成する仕組みって一体どうなっているんですか?(例)http://www.octalserve.gr.jp/html/gyoumu/hp/cgi/sample_1/index.html教えてください。.. - 人力検索はてな

URL はダミーです。

あなたがメモ帳やなんかのテキストエディタを使ってファイルを更新する、という作業をCGIが行っているだけです。

例のページの場合は、予めテンプレート用のファイルを用意しておいて、テキストフィールドで入力した内容を取得して、指定した箇所に挿入して書き出してるだけみたいですね。

id:hasiken No.9

回答回数8ベストアンサー獲得回数0

ポイント20pt

http://www.logicalyze.com/f_wbtips/cgi_1.html

CGI、SSI の仕組みをマスターしよう

方法は2種類あると思います。

1つは、ページ全体をCGIで作成します。

CGIはプログラムでHTMLを生成する為の取り決めです。URLを参考にして下さい。

2つ目は、該当場所をSSIで行う方法があります。

これは、通常のHTMLに特殊なコマンドを書くとプログラムが起動し、その表示結果をHTMLに自動的に挿入してブラウザに返します。

CGI及びSSI共に、Webサーバの設定がされている必要があり、また、多少プログラムやプログラムを設置する知識が必要になります。

教えてくださいのサンプルのですと、1つ目の方法だと

Webブラウザでテキスト入力して「入力」をクリックすると、入力したデータをサーバに保存します。

また、別のページを表示する時、HTMLのデータとサーバに保存された入力されたデータをあわせて表示します。

2つ目の方法では、HTMLのデータはそのままで、サーバに保存されたデータを表示するところに、特殊なコマンド(SSI)を入れます。

もう少し詳しい回答が欲しい場合は、どの程度の知識があるか、何処が分からないかを教えていただけると、説明できるとおもいます。

id:sasada No.10

回答回数1482ベストアンサー獲得回数133

ポイント20pt

http://www1.plala.or.jp/bagi/cgiconst.html

CGI Saloon - CGIのしくみ

 CGIの大枠は上記/下記URLの通りです。

 これは、Perl・Rubyのみいならず、C++でも同様です。

 ゲスト・ブックがご自分で作成できるなら、プログラム自体の説明は不要ですね。

 というわけで、CGIによる動的なHTML作成の構図について回答します。

 例題のCGIでも一般のゲストブックや掲示板でも、まずFORMを用いて入力欄を作ります。

 これは、静的なHTMLでもよいですし、FORM自体をCGIで動的に作る場合もあります。

 FORMからSUBMITされた内容は、http1.xというプロトコルでサーバーに返されます。

 その情報がCGIへの標準入力として渡されます。

 通常これをHttpリクエストと呼びます。

 PerlやRuby・PythonなどのCGI親和性の高い言語では、HttpリクエストからFORM変数を簡単に取り出すための仕掛けが用意されています。

 CGIプログラムは、FORM変数を用いて、ブラウザに返すHTMLを作成します。

 作成したHTMLは、通常標準出力からアウトプットします。

 このときも、http1.xというプロトコルを使います。

 この出力のことをHttpレスポンスと呼びます。

 CGI親和性の高い言語では、Httpレスポンスを簡単に作成するための機能が用意されています。

 動的に作成したHTMLを出力し終えたら、CGIの処理を正常終了させます。

 これで、一連の流れは終了です。

 …こんな説明でよかったでしょうか?

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません