劇ぱわ 不具合対策
クッキーの文字化け
状況及び原因
劇ぱわはクッキー(cookie)を利用して「なまえ」「パスワード」の入力を省いてくれますが、「なまえ」が『?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にも有効です。
前後の内容
劇ぱわ | ||||
セキュリティ対策← | 不具合対策 | →改造方法 | ||
設定の初期化← | クッキーの文字化け | →キャンプ画面が 正常に表示されない |
【劇ぱわ改造設置支援サイト】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
![]()
『旧:野良猫のCGI講座』
以前の『野良猫のCGI講座』をご覧になりたい方は、『旧:野良猫のCGI講座』からアクセスして下さい。
但し、更新は一切していません。