ssiのデータが入ったファイルを保存したい。

[上に] [前に] [次に]
rei 2000/02/02(水) 15:35:08
CGI,SSI勉強中の初心者です。
CGIで出力したテキストファイルが2つあって、それをSSIでくっつけるのですが、SSIでくっつけた最終的なファイルをデータの入った状態(つまり、ブラウザに表示されてる状態)でHTMLとして保存したいのですが、CGIを使って、自動化することはできるのでしょうか?
ご存知の方、ぜひぜひ! 教えてください。

EMI 2000/02/02(水) 16:22:53
保存ってローカルにですか?
だとしたら、不可能です。

無責任官庁 2000/02/02(水) 16:47:25
要するにSSIを使わずに、SSIがやることをCGIでやりたい、
そういう事ですよね?
もちろんできますよ。
HTMLファイルとテキストファイルを読んで、HTML中の該当する場所に
テキストファイルを挿入してあげればいいだけです。

$HTMLFILE =~ s/テキトウにHTML内に付けたラベル/$TEXTFILE/;

そういうことじゃないんです?

rei 2000/02/02(水) 17:03:09
解答、ありがとうございます。
説明がはっきりしてなくて、すみません。

htmlで書いたフォームが2つ(仮にa.html,b.html)あって、
それぞれに、cgi設定しています。
「a.html」内のボタンを押すと「a.cgi」により「a.txt」に書込み。
「b.html」内のボタンを押すと「b.cgi」により「b.txt」に書込み。
「a.txt」と「b.txt」をくっつけて「XXX.shtml」ができる。

つまり、フォームに入れたデータの自動html化をしたいのです。
ここまではできているんですが、
最後に、「a.txt」と「b.txt」をクリアにし、
「XXX.shtml」を名前をつけて保存したいんです。
でも、保存するとき、ssiのファイルってデータではなく、命令文(コマンドというのでしょうか)のままですね?データの入った状態で、
「shtml」としてでなく、単純な「html」ファイルとして
保存することは、できるのでしょうか?

hiro-kim 2000/02/02(水) 19:52:29
私はこう読みました。

c.cgiを実行すると,すでに存在すると見なしてよい2つの入力ファイル:
a.txtの内容 "<html><body><!-- #exec cgi='" と,
b.txtの内容 "ファイル名'--></body></html>" を読み出して,
1つの出力ファイル:
c.htmlの内容:"<html><body>(SSIと見なしての実行結果)</body></html>"
がWebサーバ側に保存されるようにしたいと。

この場合,中間ファイルの拡張子は.shtmlである必要はないですね。SSI機能は.shtmlファイルに対する「Webブラウザからの要求」があったときに実行されるのであり,上記の例ではWebブラウザは介在しないから拡張子は単なる.txtでよい。便宜上,SSIの文法を採用したというだけ。

ということで,無責任官庁さんのおっしゃる方向になるように思います。

[上に] [前に] [次に]