劇ぱわ 改造方法

管理画面でチーム情報を変更

要旨

管理画面でチーム情報の変更をするための改造です。
参加者には関係有りませんが、劇ぱわ管理者の手助けになる改造です。

管理画面において、選択したチームの「チーム名」「監督名」「パスワード」「アイコン」「URL」を変更できる様に改造します。

「user.dat」ファイルをエディタで編集する煩わしさを解消します。
参加者からの「チーム名」「監督名」の変更依頼や、「パスワード」変更によるログイン禁止、「専用アイコン」への変更などに大いに使えると思います♪

※2011/01/11内容改訂(チームのセレクト・URLの変更)
※2011/07/18内容変更(セキュリティ強化)

管理画面でチーム情報を変更

gekipawa.cgi」ファイルをエディタで開きます。(90行目付近だと思う……^^;)

     if($form{'rule'}) { &rule; exit; }
     ⊤
     exit;
##### デコード&ローカル変数へ受け渡し

ここに下記赤字部分を追加します。

     if($form{'rule'}) { &rule; exit; }
     if($form{'henko'}) { require './geki_login.cgi'; &henko; &kanri; exit; } # 管理機能追加
     ⊤
     exit;
##### デコード&ローカル変数へ受け渡し

更に下記部分を探します。(無編集なら1,069行目)

##### 管理用画面
sub kanri{

     if($form{'kanripass'} ne $kanri_pass){ &error('パスワードが違います。'); }

     &header;

     print <<"_EOF_";
<font color="$tcolor" size="$tsize">管理モード画面</font><br>
<br><br><br>
チーム名を入力してください。<br>
<form action=$cgifile method=$method>
<input type=hidden name=login value=1>
<input type=hidden name=kanri_mode value=1>
<input type=text name=team size=15>
<input type=submit name=login value="Enter">
</form>
<br><br>

_EOF_

# コメント

を下記の様に編集します。
下記の変更は、「チームの指定方法」を「手動入力」から「プルダウン選択」へ変更するものです。

※2011/07/18 下記を追加しました。
<input type=hidden name=kanripass value=$kanri_pass>

##### 管理用画面
sub kanri{

     if($form{'kanripass'} ne $kanri_pass){ &error('パスワードが違います。'); }

     &header;

     print <<"_EOF_";
<font color="$tcolor" size="$tsize">管理モード画面</font><br>
<br><br><br>
_EOF_
#チーム名を入力してください。<br>
     print <<"_EOF_";
<form action=$cgifile method=$method>
<input type=hidden name=login value=1>
<input type=hidden name=kanri_mode value=1>
_EOF_
#<input type=text name=team size=15> <input type=submit name=login value="Enter">
     open(US,"+<$leaguefold/$userfile") ||
     &error('指定されたファイルが開けません。');
     @users = <US>;
     close(US);
     print "<select name=team>\n";
     foreach(@users) {
          my ($saku,$dmy,$dmy,$team,$icon,$dmy,$dmy,$teamdata) = split /<p>/;
          print "<option value=$team>$team\n";
     }
     print <<"_EOF_";
</select>
<input type=hidden name=pass value=$kanri_pass>
<input type=hidden name=kanripass value=$kanri_pass>
<input type=submit name=login value=Enter>
</form>
<br><br>

_EOF_

# コメント

次に「geki_login.cgi」を編集します。
下記部分を探して下さい。(無編集なら304行目)

     if($form{'kanri_mode'}){
          print "管理モード画面です。\n";
     }elsif($win + $lose >= $league_game){

ここに下記赤字部分を追加します。
下記の変更は、「管理画面」で変更項目の編集を行う部分です。

※2011/07/18 下記2行を追加しました。
if($form{'kanripass'} ne $kanri_pass){ &error('パスワードが違います。'); }
<input type=hidden name=kanripass value=$kanri_pass>

     if($form{'kanri_mode'}){
          print "管理モード画面です。\n";

     # 管理モード機能追加
          if($form{'kanripass'} ne $kanri_pass){ &error('パスワードが違います。'); }
          $kanri_team_check = $team;
          print <<"_EOF_";
<br><br><center><table border="1" cellpadding="5">
<tr align="center"><td></td><td>変更前</td><td>変更後</td></tr>
<tr><td>チーム名</td><td>(<b>$kanri_team_check</b>)</td>
<td><input type=text value=$team name=team_s size=20></td></tr>
<tr><td>監督</td><td>(<b>$saku</b>)</td>
<td><input type=text value=$saku name=saku_s size=20></td></tr>
<tr><td>アイコン</td><td>(<b>$icon</b>)</td>
<td><input type=text value=$icon name=icon_s size=20></td></tr>
<tr><td>パスワード</td><td>(<b>$pass</b>)</td>
<td><input type=text value=$pass name=pass_s size=20></td></tr>
<tr><td>ホームページURL</td><td>(<b>$home</b>)</td>
<td><input type=text value=$home name=url_s size=20></td></tr>
<tr><tdTD align="center" colspan="3">
<br><input type=submit name=henko value="チームデータ変更する?">
<br><br></TR>
</table></center>
<input type=hidden name=kanri_team_check value="$kanri_team_check">
<input type=hidden name=kanripass value=$kanri_pass>
_EOF_
     # 管理機能追加 ここまで

     }elsif($win + $lose >= $league_game){

更に「geki_login.cgi」の最後の2行

}#end delete

1;

の「1;」の前に下記赤字部分を挿入して下さい。
下記追加部分は、チームデータ変更を実行する部分です。

※2011/07/18 下記を追加しました。
if($form{'kanripass'} ne $kanri_pass){ &error('パスワードが違います。'); }

}#end delete

#------------< ここから >--------------------- (←この行は無くてもOK!)
#### チームデータ変更(管理用)
sub henko{         

     if($form{'kanripass'} ne $kanri_pass){ &error('パスワードが違います。'); } # 2011/07/18 追加

     $kanri_team_check = $form{'kanri_team_check'};
     $team_s = $form{'team_s'};
     $saku_s = $form{'saku_s'};
     $icon_s = $form{'icon_s'};
     $pass_s = $form{'pass_s'};
     $url_s = $form{'url_s'};

# ロック開始
     open(GL,"+<$leaguefold/$lockfile") || &error('指定されたファイルが開けません。');
     eval 'flock(GL,2);';
     @gamelock = <GL>;
     ($gamecheck, $gametime) = split(/<>/, $gamelock[0]);
     if($gamecheck eq 0 || $times > $gametime + 60 * 2){
          $gamelock = "1<>$times<>\n";
     }else{ &error('メンテナンス中です。もうちょっと待っててね。'); }
     truncate (GL, 0);
     seek(GL,0,0); print GL $gamelock;
     close(GL);
     eval 'flock(GL,8);';
# ロック終了

     open(US,"+<$leaguefold/$userfile") || &error('指定されたファイルが開けません。');
     eval 'flock(US,2);';

     @users = <US>;
     foreach(@users){
          ($checksaku,$checkpass,$d,$checkteam) = split /<p>/;
          ($saku, $pass, $home, $team, $icon, $date, $ip, $teamdata, $pointdata,$bosstype, $charadata, $gamedata, $campflag)
         = split /<p>/;

          if($team eq $kanri_team_check){
               $_ = "$saku_s<p>$pass_s<p>$url_s<p>$team_s<p>$icon_s<p>$date<p>$ip<p>$teamdata<p>$pointdata<p>
          $bosstype<p>$charadata<p>$gamedata<p>$campflag<p>\n";
               last;
          }
     }
     truncate (US, 0);
     seek(US,0,0); print US @users;
     close(US);
     eval 'flock(US,8);';

# ロック解除
     $gamelock = "0><$times><\n";
     open(GL,"+<$leaguefold/$lockfile") || &error('指定されたファイルが開けません。');
     eval 'flock(GL,2);';
     truncate (GL, 0);
     seek(GL,0,0); print GL $gamelock;
     close(GL);
     eval 'flock(GL,8);';
# ロック解除終了

     $form{'$key'} = "kanri";
     $form{'kanripass'} = $kanri_pass;

} #end_henko
#------------< ここまで >--------------------- (←この行は無くてもOK!)

1;

に編集して下さい。

注意事項

この改造は劇ぱわの最重要データである「user.dat」ファイルを編集します。
改造後は、必ずローカルテストを実施して下さい。
改造を失敗した場合、チームデータが喪失・破損する危険があります。

改造スクリプトの表示に当たり、

     $_ = "$saku_s<p>$pass_s<p>$url_s<p>$team_s<p>$icon_s<p>$date<p>
          $ip<p>$teamdata<p>$pointdata<p>$bosstype<p>$charadata<p>
          $gamedata<p>$campflag<p>\n";

などの部分を複数行に改行して表示して有りますが、実際に改造する場合は、改行を入れずに1行として編集して下さい。

当サイトへのリンクを貼って下さい

「劇ぱわ」の下部著作権部分へのリンクを貼る方法

##### 著作権表示
sub chosaku{
  print <<"_CHOSAKU_";
  </center>
  <hr size="1">
  <div align="right">
    <a href="http://homepage2.nifty.com/osktaka/" target="_blank" title="気ままなまま">
      <font size="2">劇空間ぱわふるリーグ2 ver 3.00b (Free)</font>
    </a>
  </div>
  <div align="right">
    <a href="http://ryoquest.sakura.ne.jp/" target="_blank" title="改造:「野良猫のCGI講座」Take it easy !">
      <font size="2">改造:「野良猫のCGI講座」Take it easy !</font>
    </a>
  </div>
  <!--広告バナー挿入位置、ページ下部-->
  </body>
  </html>
  _CHOSAKU_
}#end chosaku

前後の内容

CGI/perl劇ぱわ俺ペナ
不具合対策改造方法
同一チームへの連敗制限管理画面でチーム情報を変更管理者コメント追加

【劇ぱわ改造設置支援サイト】Take it easy ! RYOQUEST presents

『野良猫のCGI講座』は、
【劇ぱわ改造設置支援サイト】Take it easy ! RYOQUEST presents のコンテンツとして、虎猫が公開しています。

「劇空間ぱわふるリーグ2 ver 3.00b(劇ぱわ)」は、
きままなまま』で管理人にーやん様が作成・無料配布されているCGI/Perlによる野球ゲームです。

参考にされた方は、当サイトへリンクを貼って下さい♪
サイト名:Take it easy ! RYOQUEST presents
(サイト名:Take it easy !
URL:http://ryoquest.sakura.ne.jp/
バナーURL:http://ryoquest.sakura.ne.jp/image/tie_8831an.gif
Take it easy !

『旧:野良猫のCGI講座』

以前の『野良猫のCGI講座』をご覧になりたい方は、『旧:野良猫のCGI講座』からアクセスして下さい。
但し、更新は一切していません。

ページのトップへ戻る