TOP > 野良猫のCGI講座 > 『4. 「劇ぱわ2」不具合対策』
凡田クンが教えます! 【初心者コース】 虎猫が教えます♪
『4. 「劇ぱわ2」不具合対策』
おことわり
初心者用に「劇空間ぱわふるリーグ2」(配布元:気ままなまま)設置後の不具合に関連した事を書こうかなと思います。

一生懸命頭を使って設置したのに、上手くいかない事ってありますよね。
「マニュアル通りやったじゃん!」
と、怒ってみても設置した「劇ぱわ2」が動いてくれない・・・^^;
「エラー」とか出たりしてさ、
「何故なんだー!」
と、叫んでみても正しく動いてくれない・・・^^;

設置が成功する前のエラーについては、 「劇空間ぱわふるリーグ2の設置」 に載せてありますのでそちらを参考にして下さい。
ここでは、「設置にとりあえず成功(?)したけど、おかしいぞ!」と言う方のためのアドバイスを載せておきます。
または、設置した「劇ぱわ2」のデータ変更とか、管理者が出来たら便利かなと思われる事を載せておきますね♪


これを参考にして、多くの方が「劇空間ぱわふるリーグ2」の「管理が楽になったよ♪」なんて思って頂ければ幸いです。

ここに記載してある「セキュリティ対策」「不具合対策」「改造方法」を含む全てのコンテンツの無断転載を禁止します。
また、ここに記載してある内容に不備があったとしても損害賠償などの責任は取りません。
参考にされる方の自己責任でご覧下さい。
『参考:"Take it easy !"』
URL:http://ryoquest.sakura.ne.jp/
バナー:tie_8831an.gif(3611 byte)
参考にされる方は、下のリンクからクリック募金をして下さい♪
あなたの善意をクリックにのせて♪
目次
設置の失敗
画像が表示されない 2004/11/06修正・追加
ファイルが存在しません
500 エラー 2004/11/06修正・追加
403 エラー
404 エラー
不具合発生時の対処方法
メンテナンスモードの設定と解除 2005/06/20追加
障害復旧アドバイス
チームアイコンの変更 2005/06/20追加
ホームページアドレスの変更
パスワードの変更 2005/06/20追加
チーム名の変更 2005/06/20追加
監督名の変更 2005/06/20追加
「最近の5試合」の表示がおかしい 2004/12/10修正
「リーグ更新処理中です。しばらく待っててね♪」 2004/10/29
2004/12/18修正・追加
「リーグ更新処理中です。しばらく待っててね♪」(その2) 2004/06/20
  「リーグ更新処理中です。しばらく待っててね♪」(その3)
(重要:スクリプトエラー)※必ず修正して下さい!
2006/07/08
設定の初期化 2004/11/04
クッキーの文字化け 2004/11/13
キャンプ画面がバグる 2005/04/02
ABCオロチサーバーで画面が正常に表示されない 2008/03/16
虎猫です♪どうぞよろしく♪
虎猫 presents
設置の失敗 目次に戻る
設置してると、いっぱい失敗しますよね。
何でそんな事?と、今では思えるような事もいっぱいありますよね。
もし、あなたがつまづかれたら、一度確認して見て下さい。
画像が表示されない 目次に戻る
・調子アイコンが表示されない ・gekipawa.iniの『調子の画像を使用するか(する:1, しない:0)』を確認して下さい。
・gekipawa.iniの『画像フォルダのURL(最後の「/」はいりません)』を確認して下さい。
・画像ファイルがアップロードされているか確認して下さい。
・チームアイコンが表示されない
(調子アイコンは表示される)
・gekipawa.iniの『アイコンを使用するか(する:1, しない:0)』を確認して下さい。
・チームアイコンは自分で用意して下さい。
・『GIF(gif)』以外のファイルが使われていないか確認して下さい。
・画像ファイルがアップロードされているか確認して下さい。
(画像ファイルはgekipawa.iniで指定した画像フォルダに入れて下さい。)
・アイコンの画像ファイル・表示したい名前の設定を確認して下さい。
・画像ファイル名を確認して下さい。(大文字小文字も確認)
・画像ファイルの指定時に「拡張子(.gif)」を付けていないか確認して下さい。
・調子・チーム共に未表示 ・上記『未表示の処置』をして下さい。
・タイムアウトしてしまう ・画像ファイルが重すぎるので、軽くして下さい。
・壁紙が表示されない。 ・壁紙の指定は『拡張子(.gif)』をつけて指定して下さい。
画面に『×』が表示されていない場合は、アイコン未使用の設定になっている可能性が高いです。
未表示画像『×』にカーソルを合わせて、右クリックより『プロパティ』を開いて画像のアドレス(URL)を確認して下さい。
自分のパソコンのファイヤーウォールが遮断している。
ファイルが存在しません 目次に戻る
datファイルなどをアップロードし忘れている。
datファイルなどをアップロードした場所が違う。
datファイルのパーミッション(アクセス権)の設定が間違っている。
名前を変更したのに、iniファイルを変更していない。
500 エラー 目次に戻る
Perlのパスが間違っている。
Perlのパスを先頭行に入れてない。(改行なども不可)
Perlのパスの「#!」を消してしまっている。
gekipawa.ini設定時に数値項目などに全角文字を使用している。
セキュリティ対策・改造などでスクリプト(プログラムの内容)に記述ミスをした。
403 エラー 目次に戻る
パーミッション(アクセス権)の設定ミス。
指定場所にファイルがない。アドレスが間違っている。
TOPページ(index.htmlなど)がない。
別のサーバーからのアクセス拒否が、サーバー側に設定してある。
サーバーが混み合っている。
404 エラー 目次に戻る
指定場所にファイルがない。アドレスが間違っている。
アップロードした場所が間違っている。
不具合発生時の対処方法 目次に戻る
『劇ぱわ』設置後に、あれこれしたいと言う方の為のアドバイスです。
ほとんど共通の注意事項として、何かする時は『メンテナンスモード』にして、試合ができない様にしてから行いましょう。
メンテナンスモードの設定と解除 目次に戻る
初めて設置した方が、意外と知らないのが『メンテナンスモード』なんですね。
これは、メンテナンスを行う時に、「リーグ戦を一時中断して新規登録や試合をできなくする」、とっても便利なものです。

設定方法は、gekipawa.iniファイルの
$mente = 0; # メンテナンスモード(設定変更中は'1'通常'0')

$mente = 1; # メンテナンスモード(設定変更中は'1'通常'0')
にして、サーバーへアップロードして下さい。
一度自分でアクセスして『メンテナンス中です。しばらくお待ちください。』が表示されている事を確認しましょう。

解除方法は、gekipawa.iniファイルの
$mente = 1; # メンテナンスモード(設定変更中は'1'通常'0')

$mente = 0; # メンテナンスモード(設定変更中は'1'通常'0')
にして、サーバーへアップロードして下さい。


※『「劇ぱわ2」改造方法』の「「メンテナンス中」にコメント追加」を参照して下さい♪
障害復旧アドバイス 目次に戻る
障害復旧のアドバイスというか、下記のあれこれを行ったり、改造なんかした時に何らかのミスをして大変な事になってしまう事があります。(抽象過ぎて分からないかな^^;)
例えば、ユーザーのデータが消えちゃった!とか、対戦成績がなくなっちゃった!とか、リーグが初日に戻っちゃった!なんて事が、起きてしまう事があります。
こんな事が起きてしまったら大変です。こんな時の為にデータのバックアップを取りましょう!

サーバー側のdatファイルを全てダウンロードします。
新規フォルダの中に入れて、「bu2004101314」などとフォルダ名を付けて保存しておきます。
backupした日が2004101314時みたいにしておくと分かりやすい^^)
これだけです^^;

万が一、障害が起きてしまった時には、2004101314時に戻して続行する事ができます。
当然、2004101314時〜今現在のデータは無くなりますが、全て消えてしまうよりも良いでしょう^^
参加者には、お詫びしましょうね!

復旧方法は、保存した「bu2004101314」のdatファイルを全てアップロードするだけです。
この時、メンテナンスモードにしておく事を忘れない様に♪

毎日は大変ですが(と言うか無理!)、リーグ戦初日とか、また、何か仕様を触った時などにやって置くと安心です。
チームアイコンの変更 目次に戻る
登録済みのチームのアイコンを変更したい時は、
league_rataフォルダ内のuser.datファイルのデータを直接編集する事でできます。

※メンテナンスモード設定
サーバーにアップロードしてあるuser.datファイルをダウンロードします。
user.datファイルをエディタで開き、変更したいチームの画像ファイルを変更します。
余分な改行やスペースを入れたり、「<>」などを消したりしない様に注意して下さい。
変更したuser.datファイルをアップロードします。
※メンテナンスモード解除

※障害復旧用にバックアップしておく事をお勧めします。
※障害復旧用にバックアップしたuser.datを編集しないで下さい。
※障害の内容により、バックアップしたファイルをアップロードしましょう。
(完全に戻す場合は、全てアップロードする。)


※『「劇ぱわ2」改造方法』の「管理画面でチーム名・監督名・パスワード・アイコン変更」を参照して下さい♪
ホームページアドレスの変更 目次に戻る
登録済みのチームのホームページアドレスを変更したい時は、
league_rataフォルダ内のuser.datファイルのデータを直接編集する事でできます。

※メンテナンスモード設定
サーバーにアップロードしてあるuser.datファイルをダウンロードします。
user.datファイルをエディタで開き、変更したいチームのホームページアドレスを変更します。
余分な改行やスペースを入れたり、「<>」などを消したりしない様に注意して下さい。
変更したuser.datファイルをアップロードします。
※メンテナンスモード解除

※障害復旧用にバックアップしておく事をお勧めします。
※障害復旧用にバックアップしたuser.datを編集しないで下さい。
※障害の内容により、バックアップしたファイルをアップロードしましょう。
(完全に戻す場合は、全てアップロードする。)

※『キャンプインでホームページアドレスを変更できる
パスワードの変更 目次に戻る
登録済みのチームのパスワードを変更したい時は、
league_rataフォルダ内のuser.datファイルのデータを直接編集する事でできます。

※メンテナンスモード設定
サーバーにアップロードしてあるuser.datファイルをダウンロードします。
user.datファイルをエディタで開き、変更したいチームのパスワードを変更します。
余分な改行やスペースを入れたり、「<>」などを消したりしない様に注意して下さい。
変更したuser.datファイルをアップロードします。
※メンテナンスモード解除

※障害復旧用にバックアップしておく事をお勧めします。
※障害復旧用にバックアップしたuser.datを編集しないで下さい。
※障害の内容により、バックアップしたファイルをアップロードしましょう。
(完全に戻す場合は、全てアップロードする。)


※『「劇ぱわ2」改造方法』の「管理画面でチーム名・監督名・パスワード・アイコン変更」を参照して下さい♪
チーム名の変更 目次に戻る
登録済みのチーム名を変更したい時は、
league_rataフォルダ内のuser.datファイルのデータを直接編集する事でできます。

※メンテナンスモード設定
サーバーにアップロードしてあるuser.datファイルをダウンロードします。
user.datファイルをエディタで開き、変更したいチーム名を変更します。
余分な改行やスペースを入れたり、「<>」などを消したりしない様に注意して下さい。
変更したuser.datファイルをアップロードします。
※メンテナンスモード解除

※障害復旧用にバックアップしておく事をお勧めします。
※障害復旧用にバックアップしたuser.datを編集しないで下さい。
※障害の内容により、バックアップしたファイルをアップロードしましょう。
(完全に戻す場合は、全てアップロードする。)


※『「劇ぱわ2」改造方法』の「管理画面でチーム名・監督名・パスワード・アイコン変更」を参照して下さい♪
監督名の変更 目次に戻る
登録済みのチームの監督名を変更したい時は、
league_rataフォルダ内のuser.datファイルのデータを直接編集する事でできます。

※メンテナンスモード設定
サーバーにアップロードしてあるuser.datファイルをダウンロードします。
user.datファイルをエディタで開き、変更したいチームの監督名を変更します。
余分な改行やスペースを入れたり、「<>」などを消したりしない様に注意して下さい。
変更したuser.datファイルをアップロードします。
※メンテナンスモード解除

※障害復旧用にバックアップしておく事をお勧めします。
※障害復旧用にバックアップしたuser.datを編集しないで下さい。
※障害の内容により、バックアップしたファイルをアップロードしましょう。
(完全に戻す場合は、全てアップロードする。)


※『「劇ぱわ2」改造方法』の「管理画面でチーム名・監督名・パスワード・アイコン変更」を参照して下さい♪
「最近の5試合」の表示がおかしい 目次に戻る
gekipawa.iniファイル内の画像ファイルの指定で、URLの途中に「改行」が入っているとデータが壊れて異常表示になる。
gekipawa.iniファイルの画像ファイル指定で、
$imgurl = 'http://○○.net/○○/gekipawa/geki_img'; # 画像フォルダのURL(最後の「/」はいりません)
の様に書かれるべき所を
$imgurl = 'http://○○.net/○○/
gekipawa/geki_img'; # 画像フォルダのURL(最後の「/」はいりません)

の様に途中で改行されている。
「リーグ更新処理中です。しばらく待っててね♪」 目次に戻る
「リーグ更新処理中です。しばらく待っててね♪」と、メッセージが出て止まってしまう事があります。
チームデータの量などにより、更新に必要な時間は違いますが、長くても数分で終わります。
しばらく待っても解決しない場合は、更新時に必要なファイルが読めない可能性があります。
datファイルが全てそろっているか(ファイル名を変更した場合は特に注意!)、datファイルのパーミッションはあっているか確認して下さい。

止まってしまった状態から強制的に動かすには、下記方法で動かせます。
但し、DATAが正常に更新される保証はありません
更新処理を強制的に再処理しますので、
既に行われた処理や更新により失われたDATAの影響で 不具合が発生する可能性があります
全てのデータをバックアップしてから処理される事を強くお勧めします。
管理者の自己責任で行って下さい。


past_rank.dat
ファイルをダウンロードして下さい。
この時にご自分のPC上に保存してあるデータに上書きはしないで下さい。
エディタで開くと、

1200408000<d>-1<d><d><d>
1100808000<d>38<d>虎猫<><>キャッツアイ<>・・・
1099944000<d>38<d>三毛猫<><>肉球ズ<>・・・


の様なDATA(1行目:更新時間と更新中のフラグ、2行目以降は歴代優勝者のDATA)が表示されますので、
1行目(赤字部分)を削除して、

1100808000<d>38<d>虎猫<><>キャッツアイ<>・・・
1099944000<d>38<d>三毛猫<><>肉球ズ<>・・・


の様にして、保存して下さい。
このpast_rank.datをアップロードして下さい。
ブラウザからgekipawa.cgiへアクセスすると、更新作業が始まります。

この後、更新後の「前期の記録」を確認して下さい。
首位打者などの個人データに不具合が発生している可能性が高いです。
「リーグ更新処理中です。しばらく待っててね♪」(その2) 目次に戻る
「リーグ更新処理中です。しばらく待っててね♪」と、メッセージが出て止まってしまった時のもう少し詳しい復旧作業。
※上記のpast_rank.dat編集による復旧を理解されている事を前提に説明します。

■「止まってしまった時にする事。」
・まずは、「メンテナンスモード」にしてゲームを止めます。(※「 メンテナンスモードの設定と解除」参照)
■「状況確認」しましょう。
・これら一覧表内のファイルを確認します。
past_rank.dat
comment.dat
league_dataフォルダ
(フォルダ内全て)
gamelock.dat
gamelog.dat
last_pitch.dat
last_team.dat
last_yasyu.dat
pitch.dat
record.dat
user.dat
userback.dat
winner.dat
yasyu.dat
・更新途中で止まった状況を把握します。

□サーバー内の「ファイル更新日をチェック」します。
・「past_rank.dat」ファイルの更新日を基準にほぼ同時刻のファイルは更新終了しています。
(正常に終了したかは分かりません。)

□サーバーから次のファイルをダウンロードしてきます。
・更新日で確認した更新状況から下記のファイルを確認して下さい。
(上から順に更新作業が行われます。更新処理は止まった場所以降の処理はしません。)

past_ramk.dat
1200408000<d>-1<d><d><d>
1100808000<d>38<d>虎猫<><>キャッツアイ<>・・・
の様に1行目に10桁程の数字の右側に「 -1」が表示されている事を確認します。
これが、「更新中」の印です。

yasyu.dat及びlast_yasyu.dat
・「yasyu.dat」ファイルを確認します。
・データが空になっていれば、更新処理が終了しています。(正常に終了したかは、分かりません。)
・データが空になっていなければ、更新処理が終了していません。
※ここで更新終了していなければ、「 yasyu.dat 」ファイルのオープンに失敗したものと思われます。
・「last_yasyu.dat」ファイルを確認します。
・データが前期の物であれば、正常に更新処理が終了しています。
(データが前期の物であるかは、バックアップしたuser.dat 内の個人選手の成績で確認して下さい。)
・データが前々期(第1回終了時は中身が空)の場合は、更新処理が終了していません。
※ここで更新終了していなければ、「 last_yasyu.dat 」ファイルのオープンに失敗したものと思われます。

pitch.dat及びlast_pitch.dat
・「pitch.dat」ファイルを確認します。
・データが空になっていれば、更新処理が終了しています。(正常に終了したかは、分かりません。)
・データが空になっていなければ、更新処理が終了していません。
※ここで更新終了していなければ、「 pitch.dat 」ファイルのオープンに失敗したものと思われます。
・「last_pitch.dat」ファイルを確認します。
・データが前期の物であれば、正常に更新処理が終了しています。
(データが前期の物であるかは、バックアップしたuser.dat 内の個人選手の成績で確認して下さい。)
・データが前々期(第1回終了時は中身が空)の場合は、更新処理が終了していません。
※ここで更新終了していなければ、「 last_oitch.dat 」ファイルのオープンに失敗したものと思われます。

user.dat及びuserback.dat
・「user.dat」ファイルを確認します。
・チームデータの試合記録、各選手の個人記録、対戦ログがクリアされていれば、更新処理が終了しています。
(正常に終了したかは、分かりません。)
・データがクリアになっていなければ、更新処理が終了していません。
※ここで更新終了していなければ、「 user.dat 」ファイルのオープンに失敗したものと思われます。
・「userback.dat」ファイルを確認します。
・データが「user.dat」と同じであれば、正常に更新処理が終了しています。
・データが前々期(第1回終了時は中身が空)の場合は、更新処理が終了していません。
※ここで更新終了していなければ、「 userback.dat 」ファイルのオープンに失敗したものと思われます。

pecord.dat
・「record.dat」ファイルを確認します。
・データが前期の物であれば、正常に更新処理が終了しています。
・データが前々期(第1回終了時は中身が空)の場合は、更新処理が終了していません。
※ここで更新終了していなければ、「 record.dat 」ファイルのオープンに失敗したものと思われます。

last_team.dat
・「last_team.dat」ファイルを確認します。
・データが前期の物であれば、正常に更新処理が終了しています。
・データが前々期(第1回終了時は中身が空)の場合は、更新処理が終了していません。
※ここで更新終了していなければ、「 last_team.dat 」ファイルのオープンに失敗したものと思われます。

winner.dat
・「winner.dat」ファイルを確認します。
・データが前期優勝チームで戦歴・選手個人成績などがクリアされていれば、正常に更新処理が終了しています。
・データが前期途中の場合は、更新処理が終了していません。
※ここで更新終了していなければ、「 winner.dat 」ファイルのオープンに失敗したものと思われます。

gamelog.dat
・「gamelog.dat」ファイルを確認します。
・データが空になっていれば、更新処理が終了しています。(正常に終了したかは、分かりません。)
・データが空になっていなければ、更新処理が終了していません。
※ここで更新終了していなければ、「 gamelog.dat 」ファイルのオープンに失敗したものと思われます。

※「更新処理」はここまで終了すると、「past_rank.dat」に前回優勝チームを記録して終了します。
・「-1」が「開催回数-1回」の数字に変更され、優勝チームが記録されます。

■ファイルオープン失敗の原因を解明修正してから、再更新します。
・ここまで、真面目に読まれた方は、「更新の失敗=ファイルオープンの失敗」と気付かれたでしょう♪
(改造などにより、違う場合もあります。)
□ファイルの確認
・「オープンに失敗したファイル」がサーバー上に存在するか、確認して下さい。
・パーミッション(アクセス権)の設定を確認して下さい。(通常は、666でOKです。)
gekipawa.ini ファイル内で指定したファイル名と一致しているかを確認して下さい。(変更していなければ大丈夫です。)

□改造した場合は、スクリプトを確認。(これはやった本人しか、ソースを持っていないので分かりません。)

□失敗原因を修正後、再更新します。
(再更新の方法は、 「リーグ更新処理中です。しばらく待っててね♪」を参照して下さい。)

2重に更新した部分の復旧をして下さい。
・再更新すると、更新済みの部分も再更新されます。
・「last_yasyu.dat」などが、空になってしまいます。(元データの「yasyu.dat」が空の為空のためになります。)
・再更新されてしまったファイルは、確認用にダウンロードしたファイルをサーバーにアップロードして下さい。

「リーグ更新処理中です。しばらく待っててね♪」(その3)
(重要:スクリプトエラー)
目次に戻る
  geki_else.cgiにエラーを見つけました。
この部分を修正しておかないと更新がエラーで停止する事があります。

修正前(812行目
##### 野手ソート処理
sub yasyu_sort2{

  @kiteiranks = ();
  @tmp2 = @tmp3 = ();
  foreach(@boxranks) {
    my ($team,$dmy,$dmy,$dmy,$dmy,$yasyu,$dmy,$dmy,$dmy,$dmy,$dmy,$box,$hit,$ten,$hr,$ste,$err,$for,$gid) = split /<>/;

    $daseki = $box + $for + $gid;
    $daritu = sprintf("%03d", ($hit / $box) * 1000);
    if($rankno eq 0){
      if($daseki >= $kitei_hit){
        $seiseki = $daritu;
        push(@kiteiranks, $_);
        push(@tmp2, $seiseki);
        push(@tmp3, $hit);
      }else{
        last;
      }
    }else{

修正後(赤色部分の前後に青色部分を追加する)
##### 野手ソート処理
sub yasyu_sort2{

  @kiteiranks = ();
  @tmp2 = @tmp3 = ();
  foreach(@boxranks) {
    my ($team,$dmy,$dmy,$dmy,$dmy,$yasyu,$dmy,$dmy,$dmy,$dmy,$dmy,$box,$hit,$ten,$hr,$ste,$err,$for,$gid) = split /<>/;

    $daseki = $box + $for + $gid;
    if($box){
      
$daritu = sprintf("%03d", ($hit / $box) * 1000);
    }else{
      $daritu = "000";
    }

    if($rankno eq 0){
      if($daseki >= $kitei_hit){
        $seiseki = $daritu;
        push(@kiteiranks, $_);
        push(@tmp2, $seiseki);
        push(@tmp3, $hit);
      }else{
        last;
      }
    }else{

上記のエラーは$boxが0の場合にエラーになって更新が中断されます。
ですから、$boxが0じゃなかったら$darituを計算して、そうでなかったら(0だったら)強制的に$darituに000を入れます。
設定の初期化 目次に戻る
劇ぱわの設置が完了して、セキュリティ対策も完了して、 『さぁ!公開するぞ!』 となった時にすでに『第1回リーグ〜日目』なんて事になってますよね♪
これをリセットして『第1回リーグ初日』にする方法を説明します。

datファイルを全て初期化するために各datファイルの初期状態(空の状態)の物をアップロードして下さい。
もしくは、アップしてある各datファイルの内容を削除してして下さい。(ファイルを削除しない事!)
クッキーの文字化け 目次に戻る
劇ぱわはクッキーを利用して「なまえ」「パスワード」の入力を省いてくれますが、「なまえ」が『?O?L』なんて表示されてしまう場合があります。
原因は、劇ぱわを設置したサーバーのOSが「Windows」で尚且つ「Apache2.0.49」をしようしている場合に起きるようです。
あなたが使用しているパソコンのOSは関係ありません。
(何の事かわからない人は、分かった気になって進んで下さい^^;)
ここに記載する「クッキーの文字化け」対策は、 「Windowsサーバー」+「Apache2.0.49」の組み合わせに対する対策です。
それ以外の要因による文字化けには、効果がない場合がありますので御了承下さい。
確認して下さい。
・「劇ぱわ」を設置したサーバーのOSが「Windows」なのか
・「Apache2.0.49」を使用しているのか
      ↓
・サーバーの規約・仕様をチェックする。
・サーバーの管理者に問い合わせてみる。
解決方法
gekipawa.cgiの後半に

##### クッキーの発行
sub set_cookie{
$ENV{'TZ'} = "GMT"; # 国際標準時を取得

(省略)

$date_gmt = "$youbi, $mdayg\-$month\-$yearg $hourg:$ming:$secg GMT";
$cook="pass<>$form{'pass'}\,saku<>$form{'saku'}\,home<>$form{'home'}";
print "Set-Cookie: BASEBALL=$cook; expires=$date_gmt\n";
}#end set_cookie

##### クッキーを取得
sub get_cookie{
@pairs = split(/;/, $ENV{'HTTP_COOKIE'});

(省略)

$c_pass = $COOK{'pass'};
$c_saku = $COOK{'saku'};
$c_home = $COOK{'home'};
if ($in{'pass'}){ $c_pass = $in{'pass'}; }
if ($in{'saku'}){ $c_saku = $in{'saku'}; }
if ($in{'home'}){ $c_home = $in{'home'}; }
}#end get_cookie


という部分があります。これを

##### クッキーの発行
sub set_cookie{
$ENV{'TZ'} = "GMT"; # 国際標準時を取得
local($secg,$ming,$hourg,$mdayg,$mong,$yearg,$wdayg,$ydayg,$isdstg)=localtime(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];
$ENV{'TZ'} = "Japan";
$date_gmt = "$youbi, $mdayg\-$month\-$yearg $hourg:$ming:$secg GMT";
#エンコード
$saku2 = $form{'saku'}; #エンコードするものとしないものを分ける、
$saku2 =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg;

$cook="pass<>$form{'pass'}\,saku<>
$saku2\,home<>$form{'home'}";
print "Set-Cookie: BASEBALL=$cook; expires=$date_gmt\n";
}#end set_cookie

##### クッキーを取得
sub get_cookie{
@pairs = split(/;/, $ENV{'HTTP_COOKIE'});
foreach (@pairs) {
local($key,$val) = split(/=/);
$key =~ s/\s//g;
$GET{$key} = $val;
}
@pairs = split(/,/, $GET{'BASEBALL'});
foreach (@pairs) {
local($key,$val) = split(/<>/);
$COOK{$key} = $val;
}
# デコード
$COOK{'saku'} =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1))/eg;

$c_pass = $COOK{'pass'};
$c_saku = $COOK{'saku'};
$c_home = $COOK{'home'};
if ($in{'pass'}){ $c_pass = $in{'pass'}; }
if ($in{'saku'}){ $c_saku = $in{'saku'}; }
if ($in{'home'}){ $c_home = $in{'home'}; }
}#end get_cookie


の様に赤字部分を追加・修正します。
この修正は、BBSなど他のCGIにも有効です。
キャンプ画面がバグる 目次に戻る
キャンプをした時にキャンプ画面が異常な状態になって、正常にキャンプが出来ない事があります。
原因 対策
PCのリソース不足 ・起動中の他のプログラムを終了させて下さい。
・コンピュータを再起動して下さい。
・メモリーを増設して下さい……^^;
・ハイスペックなコンピュータを購入して下さい……^^;
選手名にエラーを起こす文字が使われている
・エラーを起こす選手名を変更する。
・キャンプでは変更できないため、管理者がファイルを直接編集する。
" ダブルコーティション(半角英数)
# シャープ(半角英数)
; セミコロン(半角英数)
全ての記号をチェックしているわけではありません。
半角英数の記号は選手名に使用しない事をお勧めします。
改造時のミス 原因を見つけて、修正する。
ABCオロチサーバーで画面が正常に表示されない 目次に戻る
ABCオロチサーバーに劇ぱわを設置した時に画面が正しく表示されない事があります。
原因 対策
自動挿入される広告 ・(gekipawa.cgiが入れられる)フォルダ名、または、ファイル(gekipawa.cgi)に「frame」と言う文字を入れる。
(例)……/frame/gekipawa.cgi 「frame」と言う名称のフォルダ内に設置する。
(例)……/frame_gekipawa/gekipawa.cgi 「frame」と言う文字をフォルダ名に使用する。
(例)……/gekipawa/frame.cgi 「gekipawa.cgi」を「frame.cgi」と言う名称に変更する。
(例)……/gekipawa/frame_gekipawa.cgi 「gekipawa.cgi」のファイル名に「frame」と言う文字を使用する。
・「frame」と言う文字の入る「フォルダ」以下には、広告が自動挿入されなくなります。
・「frame」と言う文字の入るファイルには、広告が自動挿入されなくなります。

・「広告挿入タグ」を著作権表示部分などに貼り付ける。
(ABCオロチサーバーの「よくある質問」内の「手動挿入用広告タグ」参照)
※「手動挿入用広告タグ」を貼らないと規約違反でアカウントが停止されます。

※内容が変更される場合がありますので、必ず「ABCオロチ」の「よくある質問」を確認して下さい。
参考にされた方は、リンクを貼ってくれると嬉しいです♪
『参考:"Take it easy !"』
URL:http://ryoquest.sakura.ne.jp/
バナー:tie_8831an.gif(3611 byte)
2004/10/14
2005/06/20
2008/03/26
2010/08/30
 TOP > 野良猫のCGI講座 > 『4. 「劇ぱわ2」不具合対策・改造方法』