HTMLを複数作ると管理が大変なので、ひとつのCGIにまとめようかと思ってます。
HTMLフレームから、左と右をひとつのCGIファイルから呼び出すにはどうしたらよいでしょうか?

私は、CGI作ったことないので、ソースがわかりません。
パーミッションとかは、フリースプリクトの掲示板とかをいぢっているのでわかるのですが…

簡単なCGIのソースがほしいです、どなたか教えてください。

A 回答 (4件)

簡単にperlでソースを紹介しましょう!!


(必要においてカスタマイズして下さい。)
-------------------------------
if($in{'page'} eq 'a'){
&page_a_disp;
}
elsif($in{'page'} eq 'b'){
&page_b_disp;
}
else{
&page_main_disp;
}
-------------------------------
sub page_a_disp{
print <<"END";
<html>
PAGE A
</HTML>
END
}
-------------------------------
sub page_b_disp{
print <<"END";
PAGE B
<html>
</HTML>
END
}
-------------------------------
sub page_main_disp{
print <<"END";
<html>
<frameset>
<frame name="z.cgi?page=a">
<frame name="z.cgi?page=b">
</frameset>
</html>
END
}
-------------------------------
となります。
参考にして下さい。
    • good
    • 0

rokujiroさんは、親切にサンプルソースを載せられましたね。


一応、老婆心ながらrokujiroさんの補足です。
$in{'page'}を使用する場合には、
プログラムの最初の方に(perlのパスの後)に、

require 'cgi-lib.pl';
&ReadParse(*in);

を忘れないようにしてください。

cgi-lib.plで渡された環境変数を分解して、$in{'page'}などといった、連想配列に入れてくれます。

cgi-lib.plの最新版は、
http://cgi-lib.berkeley.edu/ から入手できます。

ではでは・・・・
    • good
    • 0

こんにちは。



もしかしたら、誤解しているかも知れませんがお許しください。
多分、質問の趣旨はこういうことかな・・・と思います。

フレームHTMLのなかで

<FRAMESET cols="50%,50%">
<FRAME src="A.html">
<FRAME src="B.html">

のA.html、B.htmlの管理が大変だから、両方とも、Z.cgiという形にしたいと言う事ですね。

どうしてもCGI(Perl)で実現したいという事であれば、次のようにすればできます。

<FRAME src="Z.cgi?page=A">
<FRAME src="Z.cgi?page=B">
として、Z.cgiに変数を渡し、プログラムの中で、変数による判断をさせて、おのおののHTMLを生成する、と言った具合です。

変数の受け取り方は、Perlのどの参考書でも書いてありますよ。

但し、この方法では、HTMLのソースコードはperlに埋め込まれる形になるので、メンテナンスが非常にやっかいになります。
素直に、HTMLのままで管理したほうが良いのでは・・・?

それから、CGI等の解説サイトとしては、下記のサイトが判り易いと思います。

また、サンプルソースを手に入れたければ、次のサイトも役に立ちますよ。

http://www.i-say.net/cgi/

それでは・・・

参考URL:http://tohoho.wakusei.ne.jp/www.htm
    • good
    • 0
この回答へのお礼

レスありがとうございます。
そうです、私が言いたいことはそれで合ってますよ。
「Z.cgi?page=A」のリンクが知りたかったんです。
私はてっきり「Z.cgi?A」だと思っていて、エラーが出まくっていたので困ってました。
どうもありがとうございます~、あとはソースだけですね…(汗

お礼日時:2002/03/25 05:50

CGIを作ったことが無いということなので、問題を解決するのに


相当時間がかかると思われます。
CGIはどのような言語で作成する予定ですか?Perlでしょうか。
参考URLでCGIの仕組みを学習されてから、具体的なご質問をされるとよろしいのではないでしょうか。

参考URL:http://tohoho.wakusei.ne.jp/

この回答への補足

レスありがとうございます。
フリーのスプリクトは改造しまくっているので、改造は苦手ではないです。
言語は、表示ができれば、PerlでもCGIでもいいです。
そんなに、極めるつもりはないので、今回の課題のみが知りたいです。

補足日時:2002/03/25 05:48
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QCGIソース中のHTMLタグですが。。。

print "<input type=\"text\" value=\"name\" />";
とか
print "<hr />\n";
などの

「/」 の役割がわかりませんが、必要でしょうか。
「/」 が無くても動作しているようでしたが。。。

本当に初歩的で失礼な質問かも知れませんが、
教えていただければ本当にありがたいです。

どうぞよろしくお願いいたします。

Aベストアンサー

XHTMLだと必要。
XHTMLは、yatokesaさんが既に回答してます「XML」をベースに、HTMLの仕様を再定義した、後継仕様です。
XMLは、必ず開始タグ(<h1>とか。)と終了タグ(</h1>とか、)が対にならないといけませんが、空要素(開始タグと終了タグの間に何も入れちゃダメ。)については、

<e></e>

と書く代わりに、

<e />

という書き方も認めてます。
で、XHTMLでは、<br>や<img>などを、<br />や<img />と書くようになっている、という事です。

参考URL:http://www.atmarkit.co.jp/fxml/askxmlexpert/022xhtml/22xhtml.html

QCGIプログラムを使った申し込みフォームをHTML形式のメールで送りました。ソースを開くと文字化けしてしまいます。

CGIプログラムを使うことにより、WEB上から申し込みフォームを使って入力事項をHTML形式によりメールしました。しかし、ソースを開いてみると文字化けしています。
CGIプログラムは、Shift JIS で保存したものを送信しているのですが。。
どうすれば、文字化けしない、きれいなソースが見れるようにできるでしょうか?

Aベストアンサー

こちらでも失礼します :-)

インターネットのメールで日本語表記を利用する場合はそもそもJIS(ISO-2022-JP)の7Bitで送信するのが暗黙のルールとなっています。
つまり、Shift JISのまま送り出すのではなく、JISに文字コードをコンバートしてから送り出せば良い訳です。
簡単に実現するには nkf という外部コマンドを1PASSさせるか、jcode.plというperlモジュールを用います。

ただし単純に全ての文書をnkfやperlを通すとメールヘッダ内のSubject:等もJISコードに変換されてしまいます。
メールヘッダに関してはmime変換を行う様にと rfcで取り決められています。
(現実にはこのmime実装にも色々とトラヴルが発生しますが)

尚、メールヘッダ及びメール本文に相当するHTMLの Content-type;指定も ISO-2022-JP (←JISの事) に統一しないと、受信したメーラで正しく認識できなくなりますので注意してください。

出口は近いです。ガンバってくださいネ :-D

参考URL:http://internet.watch.impress.co.jp/www/article/1999/1122/special.htm

こちらでも失礼します :-)

インターネットのメールで日本語表記を利用する場合はそもそもJIS(ISO-2022-JP)の7Bitで送信するのが暗黙のルールとなっています。
つまり、Shift JISのまま送り出すのではなく、JISに文字コードをコンバートしてから送り出せば良い訳です。
簡単に実現するには nkf という外部コマンドを1PASSさせるか、jcode.plというperlモジュールを用います。

ただし単純に全ての文書をnkfやperlを通すとメールヘッダ内のSubject:等もJISコードに変換されてしまいます。
メールヘッダに関...続きを読む

QHTMLスキン型CGIを作るには?

フォームメールの制作を行っているのですが、汎用性を高めるために、HTML部分はすべて外部に書き出して処理に関するところだけをCGIに記述しようと考えています。

まず、デザインテンプレート(HTMLスキン)に$html_contentsなどと挿入位置を記述しておき、
CGIへのアクセスがあった際に、スキンを読み込み、その挿入位置に結果を代入するというものです。

できるなら、エラーメッセージや完了メッセージの部分も外部(HTMLを記述した*.datかな?)ファイルとしたいです。

参考になるサイトもしくは、プログラムをご存知の方はご教授願います。

Aベストアンサー

ここの「スキンボード」が解りやすいかと。

参考URL:http://atom.hostmycgi5.com/

Qローカルでのcgiのパーミッション変更

自宅サーバーとしてウェブサーバーを構築してPerlはActivePerl。
通常プロバイダ・レンタルサーバーなどでcgiを設置する場合の
パーミッション変更はFTPソフトを使って変更しますが、
ローカルから外部に公開する場合のCGIのパーミッションの変更は
どうやってやるのでしょうか?どうかご教授ください。

Aベストアンサー

こんにちは。ふたたび

この辺の設定は、wwwサーバのソフトにより変わります。

共有と言う意味で言えば、
フォルダを右クリックして、「共有」
◎このフォルダを共有する
[アクセス許可]
 Everyone
があると思います。このままでは、誰であれアクセスできる状態です。
・[追加]を押したときに、WWW-USERなどに設定するソフトもあったりします。
・wwwソフトの設定で、アクセスするフォルダを制限させる場合もあります。

BlackJumboDog を使用した事が無いので、これ以上は、なんとも・・・。
なんとも、不甲斐無い回答ですが・・・
でわでわ

QCGIファイルのパーミッションの変更方法

CGIファイルのパーミッションの変更をしようとすると「アクセス権を変更する機能がサポートされていません」という表示が出てしまいます。どうすれば変更できるでしょうか?

もしプロバイダを変更するしか方法が無いのならばどこのプロバイダがおすすめか教えてくださると幸いです。(現在ASAHIネットです)

作成ソフトはGoLive6.0で転送はビルダーに付属していた転送機能を利用しています。

Aベストアンサー

https://asahi-net.jp/service/hp/
Asahiネットではプロバイダ側で用意されたCGIしか使えません

いっその事 プロバイダとは別にレンタルサーバーを借りたらどうでしょ?
http://www.sakura.ne.jp/rs/02.shtml
初年度:年間\2500 次年度より\1500/年


おすすめ情報