プログラム質問箱への投稿
記事番号00564へのフォローを投稿します。
引用記事中のHTMLをエスケープせずに
そのまま引用
することも出来ます。
お名前(ペンネイムで結構ですが必要です)
(
ブラウザに個人情報を覚えさせない)
電子メイルアドレス(必要です)
題名(必要です)
Home Page がある方はリンク希望先の URL を記載して下さい
会議室に載せたい内容を以下へお書き下さい (
HTMLを解釈せずにそのまま表示)
1月11日に、三葉工房の管理者さんは書きました。 >明けましておめでとうございます。 >三葉工房です。 >少しは,実行が出来るようになっています。 >実は,条件指定がサブルーチン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__
ホームペーヂに戻る
nir@mvg.biglobe.ne.jp
Last Update: 2 December 1999