新規記事投稿 フォロー記事投稿 記事のキャンセル
From: 三葉工房の管理者 <nature-create@amy.hi-ho.ne.jp>
Subject: 条件指定がサブルーチンに敗れました!
Date: 1999/01/11 18:24:59

明けましておめでとうございます。
三葉工房です。
少しは,実行が出来るようになっています。
実は,条件指定がサブルーチンtoppage2に負けてしまって,
スクリプト上部に近い方へ記述にされています条件指定文
if ($in{'inemit'} ge $pope) {
&check;
&input;
&toppage;

}
else {&toppage2;}
が$popeに"登録"がプロンプトから代入(サブミットボタンを押すこと)されれば,
真となり,上記のif文が成立するはずですが,サブミットボタンを押して$pope
に登録が代入されても何故か,偽になり,同じ&toppage2のhtml"
ページタイトル(否定一体化掲示板(簡潔スクリプト))が繰り返しリロードされるだけで
他の3つのサブルーチン(&check;&input;&toppage;)に実行権が渡りません。
そして,サブミットボタンも別スクリプトでテストした所,$in変数に変換可能な事が
確かめられています。
 ところで,if文が99%成立してもいいのに関わらず,elseにされてしまうのは,
何故でしょうか。問題のスクリプトも下部にコピーいたします。どうかアドバイス宜しくお願いします。
 
(注)ちなみに,&toppageと&toppage2のhtmlページは,見た目は,同じですが,上記の
if文の真と偽に関しての検証目的で,タイトル名とサブミット名を書き替えて,&toppage
のコピーした&toppage2を同一スクリプト内に作成した訳で
タイトルが
&toppageは,一体化掲示板(簡潔スクリプト)
&toppage2は,否定一体化掲示板(簡潔スクリプト)
とやや異なるところと,サブミットボタン名が
&toppageはsubmit
&toppage2はinemitと違い
。その他は,全く同じです。
=================
問題スクリプト=elpence.cgi
http://www.amy.hi-ho.ne.jp/cgi-bin/user/nature-create/elpence.cgi
========================
#!/usr/local/bin/perl
$|=1;
require './cgi-lib.pl';
read (STDIN,$in,$ENV{'CONTENT_LENGTH'});
($sec,$min,$hour,$day,$mon,$year,$wday)=localtime(time);
$mon++;
$seirei=($year+1900);
$wareki=($year-88);
$BaseDir = "$ENV{'HOME'}/html/search";
$NEWURL="http://www.amy.hi-ho.ne.jp/cgi-bin/user/nature-create/entlertg.cgi";


&ReadParse(*in);
$coment=$in{'coment'};
$name=$in{'name'};
$mail=$in{'mail'};
$gurl=$in{'gurl'};
$hpagename=$in{'hpagename'};
$dre='grss.dat';

@week=("日","月","火","水","木","金","土");
$yobi=$week[$wday];
$date=sprintf ("%4d年(平成%2d年)%2d月%2d日  $yobi曜日%3d時%2d分%2d秒"
,$seirei,$wareki,$mon,$day,$hour,$min,$sec);
&ReadParse(*in);
$coment=$in{'coment'};
$name=$in{'name'};
$mail=$in{'mail'};
$gurl=$in{'gurl'};
$hpagename=$in{'hpagename'};
$maxcment="100";
$remaxcment="50";
$wordcnt=length($in{'coment'});
$wordbit=($wordcnt/2-1);
$overtop=($wordbit-$maxcment);
$overdown=($remaxcment-$wordbit);
$pope="登録";

if ($in{'inemit'} ge $pope) {
&check;
&input;
&toppage;

}
else {&toppage2;}




sub toppage{
open (SSTBOOK, "$BaseDir/$dre") || &CgiDie("This page can't Writtig!",
"Please try to sumit in more time again!");
@Data=<SSTBOOK>;
close SSTBOOK;



print "Content-type: text/html\n\n";

print "<html>\n";
print "<head>\n";
print "<title>一体化掲示板(簡潔スクリプト)</title>\n";
print "</head>\n";
print "<body bgcolor=\"orange\">\n";
print "<p>\n";
print "<table bgcolor=\"black\" border=5>\n";
print "<tr>\n";
print "<th>\n";
print "<font color=\"orange\"size=5>\n";
print "<b>一体化掲示板</b>\n";
print "</font>\n";
print "</th>\n";
print "</tr>\n";
print "<tr>\n";
print "<td>\n";
print "<font color=\"yellow\"size=4>(注意!)此の試験実行掲示板のコメント文字数は,50文字以上100文字以内の範囲に制限されていますので,その範囲内の文字数で御記入願います。</font>\n";
print "</td>\n";
print "</tr>\n";
print "<tr>\n";
print "<th>\n";
print "<center>\n";
print "<a href=\"/nature-create/search/index.html\">\n";
print "<font color=\"yellow\"size=4>MISTUBA SEARCHPAGE</font>\n";
print "</a>\n";
print "</center>\n";
print "</th>\n";
print "</tr>\n";
print "</center>\n";
print "</table>\n";
print "<p>\n";
print "<form method=POST action=\"elpence.cgi\" >\n";
print "<p>\n";
print "<table bgcolor=\"#ffcc99\" border=5>\n";
print "<tr>\n";
print "<th>\n";
print "<font color=\"navy\"size=4>\n";
print "<b>登録者名</b>\n";
print "</font>\n";
print "</th>\n";
print "</tr>\n";
print "</table>\n";
print "<p>\n";
print "<input name=\"name\" size=45>\n";
print "<p>\n";
print "<table bgcolor=\"#ffcc99\" border=5>\n";
print "<tr>\n";
print "<th>\n";
print "<font color=\"navy\"size=4>\n";
print "<b>Eメールアドレス</b>\n";
print "</font>\n";
print "</th>\n";
print "</tr>\n";
print "</table>\n";
print "<p>\n";
print "<input name=\"mail\" size=45>\n";
print "<p>\n";
print "<table bgcolor=\"#ffcc99\" border=5>\n";
print "<tr>\n";
print "<th>\n";
print "<font color=\"navy\"size=4>\n";
print "<b>登録者のホームページ名</b>\n";
print "</font>\n";
print "</th>\n";
print "</tr>\n";
print "</table>\n";
print "<p>\n";
print "<input name=\"hpagename\" size=60>\n";
print "<p>\n";
print "<table bgcolor=\"#ffcc99\" border=5>\n";
print "<tr>\n";
print "<th>\n";
print "<font color=\"navy\"size=4>\n";
print "<b>ホームページのURL</b>\n";
print "</font>\n";
print "</th>\n";
print "</tr>\n";
print "</table>\n";
print "<p>\n";
print "<input name=\"gurl\" value=\"http://\" size=60>\n";
print "<p>\n";
print "<table bgcolor=\"#ffcc99\" border=5>\n";
print "<tr>\n";
print "<th>\n";
print "<font color=\"navy\"size=4>\n";
print "<b>コメント</b>\n";
print "</font>\n";
print "</th>\n";
print "</tr>\n";
print "</table>\n";
print "<p>\n";
print "<textarea name=\"coment\" rows=4 cols=60 wrap=\"hard\"></textarea>\n";
print "<p>\n";
print "<center>\n";
print "<input type=submit name=\"submit\" value=\"登録\">\n";
print "<p>\n";
print "<input type=reset value=\"リセット\">\n";
print "</center>\n";
print "</form>\n";
print "<hr size=5>\n";
print "<center>\n";
print "<font color=\"#330066\" size=5>\n";
print "<b>此れ迄の書き込み</b>\n";
print "</font>\n";
print "</center>\n";
print "<hr size=5>\n";

foreach $match(@Data){
@catchin=split(/&&/,$match);
print "<a href=\"mailto:$catchin[0]\">\n";
print "<font color=\"#006600\" size=4>$catchin[1]</font>\n";
print "</a>\n";
print "<font color=\"#000066\" size=3>:$catchin[2]</font><br>\n";
print "<a href=\"$catchin[3]\" target=\"new\">\n";
print "<font color=\"#990066\" size=3>$catchin[4]</font>\n";
print "</a>\n";
print "<font color=\"#330000\" size=3>$catchin[5]</font>\n";
print "<hr size=5>\n";
}
print "</body>\n";
print "</html>\n";
}

sub toppage2{
open (SSTBOOK, "$BaseDir/$dre") || &CgiDie("This page can't Writtig!",
"Please try to sumit in more time again!");
@Data=<SSTBOOK>;
close SSTBOOK;



print "Content-type: text/html\n\n";

print "<html>\n";
print "<head>\n";
print "<title>否定一体化掲示板(簡潔スクリプト)</title>\n";
print "</head>\n";
print "<body bgcolor=\"orange\">\n";
print "<p>\n";
print "<table bgcolor=\"black\" border=5>\n";
print "<tr>\n";
print "<th>\n";
print "<font color=\"orange\"size=5>\n";
print "<b>一体化掲示板</b>\n";
print "</font>\n";
print "</th>\n";
print "</tr>\n";
print "<tr>\n";
print "<td>\n";
print "<font color=\"yellow\"size=4>(注意!)此の試験実行掲示板のコメント文字数は,50文字以上100文字以内の範囲に制限されていますので,その範囲内の文字数で御記入願います。</font>\n";
print "</td>\n";
print "</tr>\n";
print "<tr>\n";
print "<th>\n";
print "<center>\n";
print "<a href=\"/nature-create/search/index.html\">\n";
print "<font color=\"yellow\"size=4>MISTUBA SEARCHPAGE</font>\n";
print "</a>\n";
print "</center>\n";
print "</th>\n";
print "</tr>\n";
print "</center>\n";
print "</table>\n";
print "<p>\n";
print "<form method=POST action=\"elpence.cgi\" >\n";
print "<p>\n";
print "<table bgcolor=\"#ffcc99\" border=5>\n";
print "<tr>\n";
print "<th>\n";
print "<font color=\"navy\"size=4>\n";
print "<b>登録者名</b>\n";
print "</font>\n";
print "</th>\n";
print "</tr>\n";
print "</table>\n";
print "<p>\n";
print "<input name=\"name\" size=45>\n";
print "<p>\n";
print "<table bgcolor=\"#ffcc99\" border=5>\n";
print "<tr>\n";
print "<th>\n";
print "<font color=\"navy\"size=4>\n";
print "<b>Eメールアドレス</b>\n";
print "</font>\n";
print "</th>\n";
print "</tr>\n";
print "</table>\n";
print "<p>\n";
print "<input name=\"mail\" size=45>\n";
print "<p>\n";
print "<table bgcolor=\"#ffcc99\" border=5>\n";
print "<tr>\n";
print "<th>\n";
print "<font color=\"navy\"size=4>\n";
print "<b>登録者のホームページ名</b>\n";
print "</font>\n";
print "</th>\n";
print "</tr>\n";
print "</table>\n";
print "<p>\n";
print "<input name=\"hpagename\" size=60>\n";
print "<p>\n";
print "<table bgcolor=\"#ffcc99\" border=5>\n";
print "<tr>\n";
print "<th>\n";
print "<font color=\"navy\"size=4>\n";
print "<b>ホームページのURL</b>\n";
print "</font>\n";
print "</th>\n";
print "</tr>\n";
print "</table>\n";
print "<p>\n";
print "<input name=\"gurl\" value=\"http://\" size=60>\n";
print "<p>\n";
print "<table bgcolor=\"#ffcc99\" border=5>\n";
print "<tr>\n";
print "<th>\n";
print "<font color=\"navy\"size=4>\n";
print "<b>コメント</b>\n";
print "</font>\n";
print "</th>\n";
print "</tr>\n";
print "</table>\n";
print "<p>\n";
print "<textarea name=\"coment\" rows=4 cols=60 wrap=\"hard\"></textarea>\n";
print "<p>\n";
print "<center>\n";
print "<input type=submit name=\"inemit\" value=\"登録\">\n";
print "<p>\n";
print "<input type=reset value=\"リセット\">\n";
print "</center>\n";
print "</form>\n";
print "<hr size=5>\n";
print "<center>\n";
print "<font color=\"#330066\" size=5>\n";
print "<b>此れ迄の書き込み</b>\n";
print "</font>\n";
print "</center>\n";
print "<hr size=5>\n";

foreach $match(@Data){
@catchin=split(/&&/,$match);
print "<a href=\"mailto:$catchin[0]\">\n";
print "<font color=\"#006600\" size=4>$catchin[1]</font>\n";
print "</a>\n";
print "<font color=\"#000066\" size=3>:$catchin[2]</font><br>\n";
print "<a href=\"$catchin[3]\" target=\"new\">\n";
print "<font color=\"#990066\" size=3>$catchin[4]</font>\n";
print "</a>\n";
print "<font color=\"#330000\" size=3>$catchin[5]</font>\n";
print "<hr size=5>\n";
}
print "</body>\n";
print "</html>\n";
}
sub check{
if (! $name) {
&CgiError("No writed to yourname!",
"Please go back around inputpage!");
 exit;
}

if($wordbit>130){print <<"MOROVER";
Content-type: text/html

<html><head><title>かなりコメント数が$overtop個もオーバーしました!</title></head>
<body bgcolor=\"\#cc0000\">
<font color=\"\#ffff66\" size=5><b>彼方の記入されたコメント数は $wordbit個で,当フォームは,コメント数が30も多い場合に時に当ページが出力されてしまいます。</b>
</font><p>
<font color=\"\#ccffcc\" size=5>そのコメント数は基準の50個に$overtop個ものかなりのオーバーです。 </font>
</body></html>
MOROVER
exit;}
if($wordbit>$maxcment){ print <<"OVER";
Content-type: text/html

<html><head><title>コメント数が$overtop個越えています!</title></head>
<body bgcolor=\"\#003399\">
<font color=\"\#ffff66\" size=5><b>彼方の記入されたコメント数は $wordbit個です。</b>
</font><p>
<font color=\"\#ccffcc\" size=5>そのコメント数は基準の100個より$overtop個オーバーしています。</font>
</body></html>
OVER
}

if($wordbit>1){if($wordbit<25){print <<"MORDOWN";
Content-type: text/html

<html><head><title>かなりコメント数が$overdown個も足りません!</title></head>
<body bgcolor=\"\#110000\">
<font color=\"\#ffff66\" size=5><b>彼方の記入されたコメント数は $wordbit個で,当フォームは,コメント数が25も少ない時に当ページが出力されてしまいます。</b>
</font><p>
<font color=\"\#ccffcc\" size=5>そのコメント数は基準の50個に$overdown個ものかなりの不足です。 </font>
</body></html>
MORDOWN
exit;}

if($wordbit<$remaxcment){print <<"DOWN";
Content-type: text/html

<html><head><title>コメント数が$overdown個足りません!</title></head>
<body bgcolor=\"\#660000\">
<font color=\"\#ffff66\" size=5><b>彼方の記入されたコメント数は $wordbit個です。</b>
</font><p>
<font color=\"\#ccffcc\" size=5>そのコメント数は基準の50個に$overdown個不足しています。 </font>
</body></html>
DOWN
exit;}}

elsif($wordbit==0){&CgiError("No writed to comment!",
"Please go back around inputpage!");
exit;}

$coment=~ s/\r\n/<br>/g;
$coment=~ s/\r/<br>/g;
$coment=~ s/\n/<br>/g;
&namabbs;
sub namabbs{


print <<"REPLAY";
Content-type: text/html

<html><head><title>$in{'name'}さん:書き込みを御受け致しました。</title><meta http-equiv="refresh" content="5; url=$NEWURL "></head>
<body bgcolor=\"\#cc66ff\">
<font color=\"\#660000\" size=5><b>$in{'name'}さん,彼方の記入なされたコメント数は,$wordbit個でコメント数規定に合致しました。</b></font><br><font color=\"\#ffff66\" size=5><b>それに伴い書き込みを御受け致しました。どうもありがとうございました。</b>
</font><p>
<font color=\"\#ccffcc\" size=5>御帰りのページは<a href=\"$NEWURL \">こちら</a>でございます。</font>
</body></html>
REPLAY
exit 1;}
exit;}
sub input{
open (SSTBOOK, ">>$BaseDir/$dre") || &CgiDie("ファイルが開きません!",
"何処かの構文が間違っています!");
print SSTBOOK "$mail&&$name&&$date&&$gurl&&$hpagename&&$coment\n";
close SSTBOOK;
}


__END__