このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

guestMailを改造して遣わせていただいているのですが…

発言者:佐藤芳樹
( Date Saturday, December 13, 1997 21:28:32 )


恥も外聞もなく書き込ませていただきますことをお許し下さい。
CGI KITに含まれるguestMailを改造して使わせていただいております。
何事もなく動作いたしておりますが、メッセージの送信後に出る
「メッセージ送信ありがとうございます。」の文章をカスタマイズしようと
return http_10_headerの後に続く構文を同じ様に書き換えましたが、
構文確認時にエラーが出てしまいます。ここには通常エディタで書かれる
ようなHTML形式は書いてはいけないのでしょうか。それとも書き方に問題が
あるのでしょうか。
ちなみに書き込んだのは以下のようなものです。
もちろん以下のHTMLそのままではなく構文と同じ様な形に手を加えて
あります。

<TITLE>Thank You</TITLE>
<BODY TEXT="#666666" BGCOLOR="#FFFFFF">
<CENTER>
<TABLE WIDTH="440" BORDER="0">
<TR><TD HEIGHT="50" ALIGN="center" COLSPAN="2">
<IMG SRC="WSLOGO.gif" WIDTH="50" HEIGHT="50">
</TD></TR>
<TR><TD ALIGN="center" COLSPAN="2"><FONT SIZE=3>
<B>ありがとうございました。</B>
</TD></TR>
<TR><TD ALIGN="left" COLSPAN="2">
<FONT SIZE=2>
本日送信していただいたデータを検討させていただき、必ずご連絡を
差し上げますので、よろしくお願いいたします。</TR>
<TR><TD COLSPAN="2"><HR></TD></TR>
<TR><TD WIDTH="210" ALIGN="center">
<FONT SIZE=2> <BR>
●●●に戻る
</TD>
<TD WIDTH="210" ALIGN="center">
<FONT SIZE=2> <BR>
<A HREF="http://www.MYWEB.co.jp">
●●●に戻る</A>
</TD></TR>

また、送信後別のHTMLファイルに飛ぶことはできないのでしょうか。
いろいろ調査致しましたがわかりません。どうかよろしくご指導下さい。

重松修 さんからのコメント
( Sunday, December 14, 1997 22:02:53 )

単にリダイレクトするのでは都合が悪いのですか?

特に、投稿された人の名前が入る訳でもないし、リダイレクトするだけならば、
スクリプトにHTMLをうめるなどという面倒な事をしなくても、PageMillなりで
適当に編集してやればいいだけだと思います。

今まで、http_10_headerを返すのと同じ要領で、例えば、cgiと同じ階層に
thankyou.htmlを入れてあるとすれば、

HTTP/1.0 302 Found<CR><LF>
MIME-Version: 1.0<CR><LF>
Location: thankyou.html<CR><LF>
<CR><LF>

※ 便宜上改行を<CR><LF>と書いていますが、実際のコードを送って下さい。

と送ってやれば良い問題だと思います。

あるいは試した訳ではありませんが例えば、
set myData to "表示"はダメですけど、
set myData to "表\示"
とすれば良いです。

また""の入れ子はできませんから、
set myData to "<A HREF="http://www.MYWEB.co.jp">"はダメですけど、
set myData to "<A HREF=\"http://www.MYWEB.co.jp\">"
とすれば良いです。

はずしてたらごめんなさい。

田中求之 さんからのコメント
( Monday, December 15, 1997 13:35:16 )

すでに重松さんからのコメントにあるように、佐藤さんのお望みのような長い HTML
を返したいときには、ページとして作っておいて、そちらへリダイレクトするのが
良いと思います。

佐藤さんのエラーの原因は、おそらくスクリプトの中で引用符 " をエスケープする
のをどこかで忘れているというのが原因ではないかと推測していますが、いずれに
せよ、実行時にしか確定できない情報を埋め込まないページなのであれば、リダイ
レクトがよいでしょうね。

return の部分に、重松さんのコメントにあるスクリプトをかけばよいのですが
リダイレクト先の URL は、できればフル URL つまり

Location: http://your.host/tanks.html

のように http:// から記述したものの方が安全です。一部のブラウザの古い
バージョンでは、部分 URL を正しく扱えない(というか、リダイレクトでは
本来はフル URL を使うのが正しいのですが)ようになってますので。

佐藤芳樹 さんからのコメント
( Monday, December 15, 1997 17:02:34 )

重松さん、田中さん、ご指導ありがとうございました。
コメントいただいて早速試してみました。思った通りに動いてくれました。
やはりスクリプトの中には埋め込まず、外部ファイルにリダイレクトする
方法をとりました。このほうが今後の管理が楽でしょうから…
こんなにつまらないことにもきちんとお答えいただき、
本当に感謝しています。