scm4.cgi修正情報


2004.03.02 修正

scm4.cgiはhtml形式のファイルを読み込ませて、携帯の種類によって表示の仕方を変えているのですが(微妙にタグの使い方が異なるので…)、その元のファイルにタグの締め忘れなどが有ると、無限ループになって、タイムアウトするというプログラムになっていた様なんです(怖)。(タグが正しければそのエラーは出ない)。それで、無限ループにはならないように修正するには、
sub chopparu{



    return $pos1;
}
を以下のように置き換えます。
sub chopparu{
    # &chopparu(0:元の文字列,:1開く括弧,2:閉じる括弧,3:探し始める位置)
    local($pos1,$pos2);
    $pos1=index($_[0],$_[1],$_[3]);
    if($pos1>=0){
         $pos2=index($_[0],$_[2],$pos1+length($_[1]));
         if($pos2 >= 0){
             $chop1=substr($_[0],0,$pos1);
             $chop2=substr($_[0],$pos1+length($_[1]),$pos2-$pos1-length($_[1]));
             $chop3=substr($_[0],$pos2+length($_[2]),length($_[0])-$pos2-length($_[2]));
         }else{
             $chop1=$_[0];
             $chop2='';
             $chop3='';
             $pos1=-1;
         }
    }
    return $pos1;
}

cgiファイルの頭の方に日付2004.03.02と入っているものは修正済みです。既にダウンロードして、いろいろな設定が済んでしまっている方は、恐れ入りますがこの部分のみ置き換えお願いします。
情報をお寄せくださいましたKさま、ありがとうございました。

元データファイルのチェッカーの様なものを準備しました。タグと無関係の>や<はHDMLではエラーになるようですし、今後いろいろチェック項目が増えるかもしれないので、それを織り込んで行ければいいと思います。
2004.3.3
[HOME] [scm4.cgi配布のページへ]