scm4.cgi補足&裏技


サブディレクトリの扱いについて

着メロを沢山扱う場合にいくつかのサブディレクトリに分けて管理したい場合があると思われます。その際の設定は、
…[scm4]-+-scm4.cgi CGI本体
         |
         +-scm4_count.cgi            集計用CGI
         |
         +-.haccess アクセスコントロールファイル(haccess.txt→UPしてから改名)
         |
         +-[html]-+-k_top.html       トップページ
         |        |
         |        +-k_melo1.html     着メロダウンロードページ
         |
         +-[melo] -+-[a]-+-Beyer60.mmf     着メロ1
                   |     |
                   |     +-Beyer60.mld     着メロ1
                   |
                   +-[b]-+-PsonataK545.mmf 着メロ2
                         |
                         +-PsonataK545.mld 着メロ2
例えば、このように同じ曲のmmf、mldを同じ[a],[b]のサブディレクトリに入れるというルールで配置した場合、
<m>♪バイエル60番,a/Beyer60,16,バイエル/とまて&t;/m><br>
<m>♪ピアノソナタK545,b/PsonataK545,16,モーツアルト/とまて</m><br>
というように、サブディレクトリつきでタグを書き、さらに、scm4.cgiの設定項目は、
$I_path='melo';
$J_path='melo';
と書き直せば大丈夫です。

応用として、
         +-[Imelo]-+-[a]-+-Beyer60.mld     着メロ1
         |         |
         |         +-[b]-+-PsonataK545.mld 着メロ2
         |
         +-[Jmelo]-+-[a]-+-Beyer60.mmf     着メロ1
                   |
                   +-[b]-+-PsonataK545.mmf 着メロ2
の様な設定であれば、タグは同上で、
$I_path='Imelo';
$J_path='Jmelo';
となります。同じ曲は同じ名前のサブディレクトリ[a],[b]に入っていることがポイントですね。

いずれにしろ、例えシミュレータでHTMLやHDMLのソースを見られたとしても[Imelo][Jmelo][melo]などの存在が明らかにされない為、 着メロが有るディレクトリを隠すことができます。
($I_melo,$J_meloの書き換えをお勧めするのはその理由からです。)

※ 尚、htmlファイルに関してはトップページからのLINKはお好みのツリー構造を作れます。元ページデータhtml同士でLINKが通っていれば現在のままのCGIでも ちゃんとLINKします。

[裏技1]htmlのディレクトリも隠したい場合

次の3箇所を変更してください。

  1. $top_page="html/k_top.html";   # ページを指定していない場合のデフォルトのファイル名(通常サイトのトップページをこのCGIからの相対パスで)
    を以下の2行で置き換えます。
    $html='html/';            # htmlの親ディレクトリ
    $top_page='k_top.html';   # ページを指定していない場合のデフォルトのファイル名



  2.     # ページデータの入力
        @dmy=<${page}*>;
        if($dmy[0] eq $page){
            &fileinput($page,'indata');
            $honbun=join("\n",@indata);
        }else{$err=$massage."$pageが見つかりません";}
        # ページデータの入力
        if(-e "$html$page"){
            &fileinput($html.$page,'indata');
            $honbun=join("\n",@indata);
        }else{$err=$massage."$pageが見つかりません";}
    と置き換えます。


  3.                 if(-e "$soutaipath"){$linkchk='<SPAN CLASS="b">LINK OK</SPAN>';}
                    if(-e "$html$soutaipath"){$linkchk='<SPAN CLASS="b">LINK OK</SPAN>';}
    と置き換えます。
以上の変更をしてhtmlを隠せば、scm4.cgiを
著作権フリー(PCからダウンロードOK)と著作権料を払サイト(PCへの ダウンロード禁止)の2セットを作って、相互LINKすることも可能になりますね!

[裏技2]管理人用のCGIを別に置く(更新作業でカウンタを動かさない)

JASRAC認定サイトなどでダウンロードログを採っている場合、更新作業中、ダウンロードテストするだけでカウントアップされるのは避けたいものです。 そこで、ダウンロードログもアクセスカウンタも動かさないで、ページテストを行える様に、閲覧者用のCGIと別のCGIを同じディレクトリに置いておくと 便利です。
  1. ディレクトリ名等全てのユーザー設定を終えたscm4.cgiをコピーして、例えばscm4x.cgiとリネームします (これは、例ですので、必ず違うファイル名にして下さいね…笑)。

    メモ帳などで開いて、


  2. $me="scm4.cgi";           # このCGIのファイル名(ファイル名を変えたときはここも書き換える必要有り)
    $me="scm4x.cgi";          # このCGIのファイル名(ファイル名を変えたときはここも書き換える必要有り)
    と書き換える


  3. $dllogmax=12;             # ダウンロードカウンタファイルの保存数(何か月分か?)
    $dllogmax=0;             # ダウンロードカウンタファイルの保存数(何か月分か?)
    と書き換える。


  4. sub access_check{
    # アクセスログファイル入力
        @access=();
        &fileinput($access_log_file,'access');
        $dmy=$access[@access-1];
        @dmy=split("\,",$dmy);
        $dmy=$dmy[3].','.$dmy[4];
        local $count=substr($dmy[0],0,5);

        # ↓前の行とのみ比較している
        if($dmy ne "\"$agent\",\"$host\""){
            # カウントUP(5桁まで)
            $count++;

            # アクセスログ更新
            local $newaccess=sprintf("%05d",$count).",$today,($access_page),\"$agent\",\"$host\"";
            push(@access,$newaccess);

            if(@access>$access_max){$dmy=shift(@access);}

            if ( !open (FILEOUT, ">$access_log_file") ){
                  $message="<HR>ファイル書き込みに失敗しました<HR>";
            }else{
                  print FILEOUT join("\n",@access);
                  close(FILEOUT);
            }
        }
        return $count;
    }
    sub access_check{
    # アクセスログファイル入力
        @access=();
        &fileinput($access_log_file,'access');
        $dmy=$access[@access-1];
        @dmy=split("\,",$dmy);
        $dmy=$dmy[3].','.$dmy[4];
        local $count=substr($dmy[0],0,5);
        return $count;
    }
    に直す。
これを、scm4.cgiと同じディレクトリに入れて属性を755に直す。このCGIを更新作業のチェックに使えばリロードやダウンロード テストを安心して繰り返すことが出来ます。

2004.02.14

[HOME][とまて週報TOP]