| ■No14768に返信(ひらしきさんの記事) > 書き込み制限をした状態 > で利用しているのですが、これでpassを入れて書き込んだ後、 > cookieを削除せずに「記事検索」「過去ログ」に入ろうとすると > (isrch.cgi を呼び出すと)isrch.cgi?no=0&P= の後に"R"ではなく書き込み > パスワードが入ってしまい、そのため、Internal Server Errorとなってしまいます。 > isrch.cgi?no=0&P= の後をRに直してリロードすると正常に入れます。
原因はcookieを呼び出しているのに、そのサブルーチンがないからのようです。 isrch.cgi の最後に #--------------------------------------------------------------------------------------------------------------------- # [cookie発行] # -> cookie の発行処理を行ないます(set_) sub set_ { if($_[0] eq "I"){$kday=1826;}else{$kday=30;} ($secg,$ming,$hourg,$mdayg,$mong,$yearg,$wdayg,$ydayg,$isdstg) = gmtime(time + 30*24*60*60); $yearg += 1900; if($secg < 10){$secg ="0$secg"; } if($ming < 10){$ming ="0$ming"; } if($hourg < 10){$hourg="0$hourg";} if($mdayg < 10){$mdayg="0$mdayg";} $month = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')[$mong]; $youbi = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday')[$wdayg]; $date_gmt = "$youbi, $mdayg\-$month\-$yearg $hourg:$ming:$secg GMT"; if($_[0] eq "P"){print"Set-Cookie: $s_pas=$s_pas; expires=$date_gmt\n";} } #--------------------------------------------------------------------------------------------------------------------- # [cookie取得] # -> cookie の取得処理を行ないます(get_) sub get_ { $cookies = $ENV{'HTTP_COOKIE'}; @pairs = split(/;/,$cookies); foreach $pair (@pairs) { ($NAME, $value) = split(/=/, $pair); $NAME=~ s/ //g; $DUMMY{$NAME} = $value; } if($_[0] eq "P"){if($DUMMY{"$s_pas"}){$FORM{"P"}=$DUMMY{"$s_pas"};}} } と入れてみてください。配布ファイルの方も修正しておきます。
|