• 締切済み

CGI+Sendmail:メールフォームについてです。

前提:フォームがあるページのファイル名を「start.html」とします。 CGIとSendmailを用いてフォームを作り、送信ボタンを押すと、私のCGIだと「送信完了」というページが表示されるようにしてあります。そこで、その送信完了というメッセージ(表示)は、小さなウィンドウに表示して、start.htmlのページは変わらないようにしたいのです。 あるいは、小さいウィンドウを出さずに、送信完了というメッセージを表示したら、3秒後に自動でstart.htmlに戻るようにしたいのです。 いずれかの方法でCGIに記述したいと思っています。 追記すればいいソースを教えていただけないでしょうか? (CGI)送信完了のページ等は、 print" ・・・・・ \n"; という書式で書いています。

みんなの回答

回答No.6

> HTMLを出力するのと同じようにやるだけなので、もちろん出来ます。 HTMLと同じように出力する...です。 以下はサンプルです。 print "Content-type: text/html\n\n"; print "<html><head><title>$title</title>\n"; print "<SCRIPT type=\"text/javascript\">\n\n"; print "<!--"; print "function reload() {\n"; : : print "</head>\n"; print "<BODY onLoad=\"delay();\">"; print "送信完了でし!<br><br>\n"; print "◯秒後に○○にジャンプします。<br>\n"; : :

回答No.5

print "<META http-equiv=\"refresh\" content=\"10;URL=http://xxx.xxx/~xxx/index.html\">\n"; ですね。 > また、CGIの中にJSも入れることができるのですか? HTMLを出力するのと同じようにやるだけなので、もちろん出来ます。 メタタグで機能の実現が難しい場合というのは、例えばフレーム分割した複数のフレームを 同時にリフレッシュする場合などです。 PHPですが、掲示板で投稿一覧とログの2つのフレームのリフレッシュに使っています。

回答No.4

私も、多重送信の可能性を考えると <meta http-equiv="Refresh" ~ > の方が良いと思いますがメタタグで機能の実現が 難しい場合、以下のような Javaスクリプトで飛ばすこともできます。 <SCRIPT type="text/javascript"> <!-- function reload() { location.href="http://~" } function delay() { id = setTimeout("reload()", 3000); } // --> </SCRIPT> : : : <BODY onLoad="delay();">

arrangemental_jp
質問者

補足

print "Content-type: text/html\n\n"; print "<html><head><title>$title</title>\n"; print "<META http-equiv="refresh" content="10;URL=\"http://xxx.xxx/~xxx/index.html\">\n"; print "</head>\n"; print "送信完了でし!<br>\n"; このような記述をすればいいと言うことですか? アドレスの部分等、書式に間違い、あるいは全体に違いがあれば、教えてください。 また、CGIの中にJSも入れることができるのですか? よくわかりません。理解が悪くてすみません。教えて頂けますか?

  • the845t
  • ベストアンサー率33% (246/743)
回答No.3

あるいは・・・の方ですが、 <meta>で飛ばしては? あとキャッシュも取らないようにしておいた方がよいかと。

arrangemental_jp
質問者

補足

print "Content-type: text/html\n\n"; print "<html><head><title>$title</title>\n"; print "<META http-equiv="refresh" content="10;URL=\"http://xxx.xxx/~xxx/index.html\">\n"; print "</head>\n"; print "送信完了でし!<br>\n"; このような記述をすればいいと言うことですか? アドレスの部分等、書式に間違い、あるいは全体に違いがあれば、教えてください。

  • zebedeer
  • ベストアンサー率66% (80/121)
回答No.2

<form>タグに「target="_blank"」をつければ、完了画面を別画面で表示させることが出来ます。 JavaScriptと違って別画面の大きさや位置は変更できませんが、HTMLのみでできるのでブラウザに依存しにくいですし、変更箇所も少なく簡単です。 具体的には「<form 」になっている個所を「<form target="_blank"」のように書き換えます。

noname#25358
noname#25358
回答No.1

 JavaScript でお好きなサイズのサブウィンドウを開いて、そのウィンドウの location.heaf に対して "sendmail.cgi?subject=........." という文字列を渡してしまう方法があると思います。  ただ、GETメソッドを使う関係でメールサイズが8KBほどしか作れませんけど(^_^;  分からない点とかは補足ください。

arrangemental_jp
質問者

補足

具体的な記述方法を教えて頂けませんか?

関連するQ&A

専門家に質問してみよう