HTMLのフォームからsubmitしてcgiにアクセスする。
cgiでHTMLからのポストとゲットを読み込んで
ログファイルに書き込む。
というCGIを作ったんだけど、
print "Content-type: text/html\n\n";
を書かないと、submitしてからcgiの処理が
止まらないみたいでした。
print "Content-type: text/html\n\n";
を書くと、処理は正常になるけど、cgiファイルに
ジャンプしてしまいます。
openで書き込みをする場合、cgiに飛ばずに
処理する方法を教えてください。
No.1
- 回答日時:
おっしゃっている意味がよくわからないのですが、
「CGIの処理が止まらない」とはどういう意味なのでしょう?
無限ループ?
print "Content-type: text/html\n\n";
というのは「これからprintするものは、テキスト形式で書かれたHTMLだよ」
という宣言のようなものなので、HTMLを出力するときに必須です。
これを書かないとエラーになるのですが、そういうことではないのですか?
また、「CGIに飛ばずに処理」とおっしゃっていますが、CGIにジャンプせずに
(CGIを呼び出し、実行せずに)CGIで処理を行うなんて不可能です。
もし、処理後に表示するページの拡張子をHTML等にしたいのであれば、
何も表示せずに処理後表示したいHTMLに強制ジャンプをさせればよいです。
この回答への補足
CGIの処理が止まらない
というのは、IEを見ていてなんとなくそう思った
だけなんだけど、エラー表示は出ないんです。
例えば、カウンターなら、HTMLを開けば
img src=a.cgi とかでアクセスして処理ができるけど
openして書き込みをする場合はcgiへのシャンプは
必ずしなければいけないのかを知りたいです。
cgiに飛ばないといけないけど、
print "Content-type: text/html\n\n";
は書く必用無いということなら
print "Location:http://www.yahoo.co.jp/\n\n";
とかで、すぐに元のHTMLに戻らせたいと思っています。
No.2
- 回答日時:
No.3
- 回答日時:
#2の補足ですが。
。。CGIとPerlについてご存知であればわかると思っていたのですが。。。
CGIはWebの操作にたいしてWeb画面に応答を返します。
<IMG A=****.cgi> とやるケースでも、「画像データ」という応答を返しています。
そういう意味では、「処理が止まらない」ように見えるのは、「CGIからの応答を返していない」ために、IEでは「応答を待ちきり」の状態になっているということだと思います。
# ようはprint文で何らかの応答を返す必要があるということです
話を戻しますが、ログファイルにデータを書き込むCGIを作成する場合、普通はCGIの実行結果をWeb画面に出力するように作ると思います。
# 「ログの書き込みが正常終了しました」とか・・・
そうしないと、ご質問の事象のように、処理が終わっているのかどうかわからないような事態になるんだと思いますよ。
この回答への補足
img src= なら
#!/usr/bin/perl
@jikan = localtime(time);
open(F,">>aaa.txt");
print F @jikan;
close(F);
で、HTMLのままcgi処理できることが分かりました。
これならcgiへのアクセスはIEを見ていて、
一瞬で終わっただろうと感じました。
submitではHTMLのままcgiでゲットとポストを
読んで書き込む方法はありませんか?
No.4
- 回答日時:
フォームからSubmitしてCGI処理した後に、ブラウザのアドレスバーに表示されるURLをCGIのものではなくHTMLにしたいということですよね。
それなら、補足で書いていらっしゃるように、
print "Location:http://www.yahoo.co.jp/\n\n";
等とするしか方法はありません。
それで何か問題があるのでしょうか?
Submit後のアドレスバー表示をHTMLにしたい
というのではなく、CGIにジャンプしてしまう
というのをやめさせたたかったんです。
print "Location:http://www.yahoo.co.jp/\n\n";
の方法でも、同じアドレスだけど、ジャンプするから
HTMLの表示状態が初期化されてしまうから
それも避けられる方法を探していました。
No.5ベストアンサー
- 回答日時:
サンプル作ったげるから自分で考えてください。
いろいろなやり方があります(ありすぎてどれでも良いですね)
(今回は、A__さんが<img なら~)とあったので、
img書いてみますか。。。。
a.html
--------------
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=shift_jis">
<style type="text/css"><!--
#layer { position: absolute; top: 0px; left:0px; width: 0px; height: 0px; visibility: visible }-->
</style>
</head>
<script language="javascript"><!--
function CGI() {
layer.visible=false;
layer.innerHTML="<img src='a.cgi?"+document.myForm.textareaName.value+"' width=0 height=0>";
}
//--></script>
<body>
<form name="myForm">
<textarea name="textareaName"></textarea>
<input type="button" name="submitButtonName" value="AB" onclick="return CGI();">
<div id="layer">a</div>
</body>
</html>
a.cgi
-----------------
#/usr/bin/perl;
$_=$ENV {"QUERY_STRING"};
open FH, ">text.txt";
print FH $_;
text.txt
-----------------
空っぽでもなんでもOK
あとは、研究してみてください。今回はGETの例ですね。
POSTは。。。まぁ、応用すればわかるでしょう。
頑張ってくださいね。
後からimgタグを書いてCGIにアクセスするという
ことができてしまうんですねー。
とても勉強になりました。
POSTデータはGETにまわして、教えてくれた
ソースを利用して、おとなしく送信させることができました。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- CGI CGIが読み書きするデータファイルのパーミッションはさくらのインターネットでは何にするべき? 1 2023/05/02 16:44
- CGI CGIで出力するhtmlの<!DOCTYPE html>等のタグは要りますか? 2 2023/02/05 21:26
- CGI htmlからcgiを自動的に起動させたい 1 2023/02/21 19:39
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- CGI (フリーの)ツリー掲示版CGI、昔は多用させてもらいましたが・・今セキュリティ上どうでしょう? 2 2023/06/25 07:18
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CGI
-
htmlからパラメータで、cgiに渡...
-
wordの数式について 定積分を書...
-
ラジオボタンが両方とも選択で...
-
SUN BBSの改造方法
-
pythonのnumpyでの列(縦)ベク...
-
vsftpd+sslでアップロードできない
-
HTML プルダウンメニューの選択...
-
Javascriptの変数をCGIに送る方法
-
perlで書いたcgiでsqliteの使い...
-
Webアプリケーションを作りたい!
-
WEBページを強制的に横画面で見...
-
『数字の3桁毎にカンマを付け...
-
HTMLからCGIへデータを引き継ぎ
-
チェックボックスで選択した内...
-
標準入力からデータが読込めない
-
VBで表示したホームページの...
-
open.window(javascript) を使...
-
CGI実行できない。ソースが表示...
-
↓の質問:テキストではなく、セ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
perl/cgi リダイレクトができない
-
htmlからパラメータで、cgiに渡...
-
フォントサイズを変えるには?
-
CGI経由でのPDFファイルをダウ...
-
CGI
-
プログラム実行中の待機ページ...
-
メイルフォームの本文が文字化け
-
Yomi-Searchのカテゴリを縦並び...
-
cgi(perl) sendmailの使い方
-
sendmail 送信先を複数設定す...
-
iis+cgiでmultipart/form-data...
-
<FORM TYPE="subumit">でデータ...
-
サーバー上のPDFにCGIでパスワ...
-
指定のフォルダに指定のファイ...
-
wordの数式について 定積分を書...
-
ラジオボタンが両方とも選択で...
-
select値をhiddenのvalueに渡し...
-
「value」に2つの値をセットす...
-
チェックボックスの返す値
-
INPUT TYPE
おすすめ情報