AN HTTPD ゲストブック/コメント集(2000年12月3日16:06)


中田昭雄 nakata@st.rim.or.jp 2000/12/03 17:33

宇都宮さん、
ブラウザがLocationヘッダで指定した URL にすぐアクセスするからでしょう。
Locationヘッダを出力するのをやめればいいはずです。

ただし、それでもたぶんファイルの同時書き込みの問題は残ります。


宇都宮 akadaki@dokidoki.ne.jp 2000/12/03 16:06

お忙しいところお手数ですがよろしくお願いいたします。
下記のプログラムを作成したのですが、httpd上では問題なく
動きますが、サーバ上ではファイルが開けないか、書き込みが
出来てないような気がします。関係するファイルのパーミッション
は問題ないと思います。初期設定が出来てないのでしょうか。
フォームから入力して送信しますと2行目のview.cgiは出力され
ますが、入力したデータが表示されません。なにとぞよろしく
お願いいたします。

#!/usr/local/bin/perl 
print "Location: http://www2.dokidoki.ne.jp/akadaki/view.cgi/\n\n";
require "cgi-lib.pl";
require "jcode.pl";
$year = localtime;

&ReadParse;
$name = $in{"name"};
$mail = $in{"mail"};
$comment = $in{"comment"};

&jcode'convert(*name,"sjis");
&jcode'convert(*comment,"sjis");

$datafile = "visitor.txt";
$tempfile = "temp";

open(TMP,">$tempfile");
open TMP or die ("$tempfile が開けません。\n");
print TMP "<HR>";
print TMP "投稿日$year\n";
print TMP "<DT><A HREF=\"mailto:$mail\">$name</A>\n";
print TMP "<DD>$comment\n";

open(DATA,$datafile);
open DAT or die ("$datafile が開けません。\n");
while (<DATA>) {
print TMP $_;
}

close(DATA);
close(TMP);

rename($tempfile,$datafile);

print "Content-type: text/html\n\n";
print "<HTML>\n<HEAD>\n<TITLE>Written.</TITLE>\n</HEAD>\n";
print "<BODY>\n<H1>データを書き込みました。</H1>\n";
print "書き込みありがとうございました。\n";
print "</BODY>\n</HTML>\n";