質問者 まだまだ初心者
投稿日 7/18(木) 20:09:32
自作の掲示板を作っています。
bbs_reg.cgi、log.dat、bbs_show.cgiという3つのファイルで実現させようと思っています。
bbs_reg.cgiでは投稿内容をlog.datに書き込み、bbs_show.cgiではlog.datの内容を読み込んで表示させます。
bbs_reg.cgiはきちんと動くのですが、bbs_show.cgiが動いてくれないのです。(mac perlではsyntax OKと出ます)
以下に、bbs_reg.cgiとbbs_show.cgiのスクリプトを記しておきますので、どなたかアドバイスを頂けませんでしょうか。
bbs_reg.cgi
#!/usr/bin/perl
require 'jcode.pl';
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
&jcode'convert(*value, 'sjis');
$value =~ s/\r\n/<br>/g;
$value =~ s/\r/<br>/g;
$value =~ s/\n/<br>/g;
$form{$name} = $value;
}
$time = time;
$expire = int($time + $form{'expire'} * 86400);
$data = "$form{'title'},$form{'message'},$expire\n";
open(LOG_FILE, ">>log.dat") || die "ファイルを開けませんでした。";;
flock(LOG_FILE, 2);
print LOG_FILE $data;
flock(LOG_FILE, 8);
close(LOG_FILE);
open(LOG_FILE, ">>i-log.dat") || die "ファイルを開けませんでした。";;
flock(LOG_FILE, 2);
print LOG_FILE $data;
flock(LOG_FILE, 8);
close(LOG_FILE);
print "Content-type:text/html\n\n";
print << "EOH";
<html>
<head>登録完了</head>
<body>
登録は無事完了しました。<br>
<br>
<a href="http://www.-----.jp/------/main.html" target=main>こちらから最初のページに戻って下さい。</a>
<br>
</body>
</html>
EOH
bbs_show.cgi
#!/usr/bin/perl
$LogFile = './log.dat';
$time = time;
open(IN,"$LogFile") || die "ファイルを開けませんでした。";
while(<IN>){
$data = $_;
($expire) = (split(/\,/,$data))[2]; #有効期限を得る
if($time <= $expire){ #現在のtime値が$expireより少なければ
push @all,$data; #@allに入れる
}
}
close IN;
open OUT,">> $LogFile";
foreach (@all){ #@allをログファイルに書き込む
print $_;
}
close OUT;
print "Content-type:text/html\n\n";
print << "EOH";
<HTML>
<HEAD>
<TITLE>新入荷コミックス</TITLE>
<BODY>
<center>
<img src = "http://www.-------.jp/-----.jpg"><br>
<img src = "http://www.-------.jp/-----.jpg"><br></center>
EOH
$spacer = "http://www.--------.jp/-------.jpg";
open IN,"LogFile";
foreach(<IN>){
$data = $_;
($title,$message,$expire) = (split(/\,/,$data))[0,1,2];
print "■$title<br>■$message<br>$spacer\n";
}
print << "EOH";
<a href= "http://www.-------.jp/--------.html" target="main">戻る</a>
</BODY>
</HTML>
EOH
プロバイダ参照:http://www.interlink.or.jp/
サーバのOS:UNIXサーバ
パソコンのOS:Mac9
エディタ:mac J perl
FTPソフト:fetch v3
サーバ移転:していない
改造:(未選択)
CGI習熟度:advanced
|