TOWN
セキュリティ対策
「銀行ローン」の不正防止
「銀行ローン」の不正防止方法を紹介します。
改造場所
■「basic.cgi」
改造内容
■「basic.cgi」をエディタで開き、下記部分を探して下さい。 (※表示の都合上改行が加えてあります。)
#######ローン
sub loan {
#借り入れ処理の場合
if ($in{'hensai_kaisuu'}){
if ($loan_kaisuu > 0){ &error("ローンを完済するまで新しい融資はできません。");}
my ($nitigaku,$nitigaku_kaisuu) = split(/×/,$in{'hensai_kaisuu'});
★★★
$loan_nitigaku = "$nitigaku";
$loan_kaisuu = "$nitigaku_kaisuu";
$bank += $in{'yuusi_kanougaku'};
&kityou_syori("住宅ローン","",$in{'yuusi_kanougaku'},$bank,"普");
#ログ更新
&temp_routin;
&log_kousin($my_log_file,$k_temp);
&message("$in{'yuusi_kanougaku'}円を普通預金口座に振り込みました。","login_view");
#一括返済の場合
}elsif ($in{'command'} eq "ikkatu_hensai"){
$ikkatu_hensai_gaku = $loan_nitigaku * $loan_kaisuu;
if ($bank < $ikkatu_hensai_gaku){ &error("普通口座に十\分な預金がありません");}
$bank -= $ikkatu_hensai_gaku;
$loan_nitigaku = 0;
$loan_kaisuu = 0;
&kityou_syori("住宅ローン一括返済","$ikkatu_hensai_gaku","",$bank,"普");
#ログ更新
&temp_routin;
&log_kousin($my_log_file,$k_temp);
&message("住宅ローンの一括返済をしました。","login_view");
#査定処理画面出力
}else{
open(SP,"./dat_dir/job.dat") || &error("Open Error : ./dat_dir/job.dat");
$top_koumoku = <SP>;
@job_hairetu = <SP>;
close(SP);
foreach (@job_hairetu) {
&job_sprit($_);
if($job_name eq "$job"){
last;
}
}
$yuusi_kanougaku = int(($job_kyuuyo * ($job_keiken/50) * ($job_kaisuu/50)) + ($bank * 2)+($super_teiki * 2.5));
$yuusi_kanougaku -= $yuusi_kanougaku % 10000;
$kai12 = int(($yuusi_kanougaku + ($yuusi_kanougaku*0.05))/12);
$kai24 = int(($yuusi_kanougaku + ($yuusi_kanougaku*0.06))/24);
$kai36 = int(($yuusi_kanougaku + ($yuusi_kanougaku*0.07))/36);
$kai48 = int(($yuusi_kanougaku + ($yuusi_kanougaku*0.08))/48);
$kai60 = int(($yuusi_kanougaku + ($yuusi_kanougaku*0.09))/60);
$kai72 = int(($yuusi_kanougaku + ($yuusi_kanougaku*0.1))/72);
$kai84 = int(($yuusi_kanougaku + ($yuusi_kanougaku*0.11))/84);
$kai96 = int(($yuusi_kanougaku + ($yuusi_kanougaku*0.12))/96);
$kai108 = int(($yuusi_kanougaku + ($yuusi_kanougaku*0.13))/108);
$kai120 = int(($yuusi_kanougaku + ($yuusi_kanougaku*0.14))/120);
★★★
&header(ginkou_style);
print <<"EOM";
<table width="400" border="0" cellspacing="0" cellpadding="20" align=center class=yosumi>
<tr>
<td bgcolor=#ffffff>
<div class=dai align=center>ご 査 定</div><hr size=1><br>
<div class=job_messe>$name様の当銀行へのお預け入れ額や<br>
ご職業、経験、勤続期間などから査定いたしまして、<br>
ご融資できます金額は以下の通りとなります。
<br><br><div class=dai>$yuusi_kanougaku円</div>
<form method="POST" action="$this_script">
<input type=hidden name=mode value="loan">
<input type=hidden name=name value="$in{'name'}">
<input type=hidden name=pass value="$in{'pass'}">
<input type=hidden name=k_id value="$in{'k_id'}">
<input type=hidden name=town_no value=$in{'town_no'}>
<input type=hidden name=yuusi_kanougaku value="$yuusi_kanougaku">
ご返済は毎日(ログイン時)、返済回数に応じて5〜14%の利子がついた額が普通預金口座より引き落とされます。<br>
また、完済するまでは次にお金を借りることはできません。
<select name="hensai_kaisuu">
<option value="$kai12×12">12回払い(日額$kai12円)</option>
<option value="$kai24×24">24回払い(日額$kai24円)</option>
<option value="$kai36×36">36回払い(日額$kai36円)</option>
<option value="$kai48×48">48回払い(日額$kai48円)</option>
<option value="$kai60×60">60回払い(日額$kai60円)</option>
<option value="$kai72×72">72回払い(日額$kai72円)</option>
<option value="$kai84×84">84回払い(日額$kai84円)</option>
<option value="$kai96×96">96回払い(日額$kai96円)</option>
<option value="$kai108×108">108回払い(日額$kai108円)</option>
<option value="$kai120×120">120回払い(日額$kai120円)</option>
</select>
<input type=submit value="借りる">
</form>
</td></tr>
</table>
<div align="center"><a href=\"javascript:history.back()\"> [前の画面に戻る] </a></div>
</body></html>
EOM
exit;
} #else(借り入れ処理で無い場合)の閉じ
}
■上記「★★★」に下記赤文字部分(二箇所)を追加して下さい。
#######ローン
sub loan {
#借り入れ処理の場合
if ($in{'hensai_kaisuu'}){
if ($loan_kaisuu > 0){ &error("ローンを完済するまで新しい融資はできません。");}
my ($nitigaku,$nitigaku_kaisuu) = split(/×/,$in{'hensai_kaisuu'});
#※不正対策 ここから
$kojin_loan_file = "./member/$in{'k_id'}/kojin_loan.cgi";
open(KKF,"$kojin_loan_file")|| &error("ローン個人ファイルが開けません。");
@kojin_loan =<KKF>;
close(KKF);
$kl_flg = 0;
foreach (@kojin_loan){
($kl_kai,$kl_nitigaku,$kl_yusigaku) = split(/<>/,$_);
if($kl_kai eq $nitigaku_kaisuu){
if($kl_nitigaku ne $nitigaku){
&error("不正な融資が行われたため、取引は中止となりました。");
}
if($kl_yusigaku ne $in{'yuusi_kanougaku'}){
&error("不正な融資が行われたため、取引は中止となりました。");
}
$kl_flg = 1;
last;
}
}
if(!$kl_flg){ &error("不正な融資が行われたため、取引は中止となりました。");}
#※不正対策 ここまで
$loan_nitigaku = "$nitigaku";
$loan_kaisuu = "$nitigaku_kaisuu";
$bank += $in{'yuusi_kanougaku'};
&kityou_syori("住宅ローン","",$in{'yuusi_kanougaku'},$bank,"普");
#ログ更新
&temp_routin;
&log_kousin($my_log_file,$k_temp);
&message("$in{'yuusi_kanougaku'}円を普通預金口座に振り込みました。","login_view");
#一括返済の場合
}elsif ($in{'command'} eq "ikkatu_hensai"){
$ikkatu_hensai_gaku = $loan_nitigaku * $loan_kaisuu;
if ($bank < $ikkatu_hensai_gaku){ &error("普通口座に十\分な預金がありません");}
$bank -= $ikkatu_hensai_gaku;
$loan_nitigaku = 0;
$loan_kaisuu = 0;
&kityou_syori("住宅ローン一括返済","$ikkatu_hensai_gaku","",$bank,"普");
#ログ更新
&temp_routin;
&log_kousin($my_log_file,$k_temp);
&message("住宅ローンの一括返済をしました。","login_view");
#査定処理画面出力
}else{
open(SP,"./dat_dir/job.dat") || &error("Open Error : ./dat_dir/job.dat");
$top_koumoku = <SP>;
@job_hairetu = <SP>;
close(SP);
foreach (@job_hairetu) {
&job_sprit($_);
if($job_name eq "$job"){
last;
}
}
$yuusi_kanougaku = int(($job_kyuuyo * ($job_keiken/50) * ($job_kaisuu/50)) + ($bank * 2)+($super_teiki * 2.5));
$yuusi_kanougaku -= $yuusi_kanougaku % 10000;
$kai12 = int(($yuusi_kanougaku + ($yuusi_kanougaku*0.05))/12);
$kai24 = int(($yuusi_kanougaku + ($yuusi_kanougaku*0.06))/24);
$kai36 = int(($yuusi_kanougaku + ($yuusi_kanougaku*0.07))/36);
$kai48 = int(($yuusi_kanougaku + ($yuusi_kanougaku*0.08))/48);
$kai60 = int(($yuusi_kanougaku + ($yuusi_kanougaku*0.09))/60);
$kai72 = int(($yuusi_kanougaku + ($yuusi_kanougaku*0.1))/72);
$kai84 = int(($yuusi_kanougaku + ($yuusi_kanougaku*0.11))/84);
$kai96 = int(($yuusi_kanougaku + ($yuusi_kanougaku*0.12))/96);
$kai108 = int(($yuusi_kanougaku + ($yuusi_kanougaku*0.13))/108);
$kai120 = int(($yuusi_kanougaku + ($yuusi_kanougaku*0.14))/120);
#※不正対策 ここから
$kojin_loan_file = "./member/$in{'k_id'}/kojin_loan.cgi";
if (! -e $kojin_loan_file){
open(KKF,">$kojin_loan_file") || &error("ローン個人ファイルを作成できません。");
close(KKF);
}
@kojin_loan = ();
$kojin_loan[0] = "12<>$kai12<>$yuusi_kanougaku<>\n"."24<>$kai24<>$yuusi_kanougaku<>\n"
."36<>$kai36<>$yuusi_kanougaku<>\n"."48<>$kai48<>$yuusi_kanougaku<>\n"
."60<>$kai60<>$yuusi_kanougaku<>\n"."72<>$kai72<>$yuusi_kanougaku<>\n"
."84<>$kai84<>$yuusi_kanougaku<>\n"."96<>$kai96<>$yuusi_kanougaku<>\n"
."108<>$kai108<>$yuusi_kanougaku<>\n"."120<>$kai120<>$yuusi_kanougaku<>\n";
open(KKF,">$kojin_loan_file")|| &error("ローン個人ファイルが開けません。");
print KKF @kojin_loan;
close(KKF);
#※不正対策 ここまで
&header(ginkou_style);
print <<"EOM";
<table width="400" border="0" cellspacing="0" cellpadding="20" align=center class=yosumi>
<tr>
<td bgcolor=#ffffff>
<div class=dai align=center>ご 査 定</div><hr size=1><br>
<div class=job_messe>$name様の当銀行へのお預け入れ額や<br>
ご職業、経験、勤続期間などから査定いたしまして、<br>
ご融資できます金額は以下の通りとなります。
<br><br><div class=dai>$yuusi_kanougaku円</div>
<form method="POST" action="$this_script">
<input type=hidden name=mode value="loan">
<input type=hidden name=name value="$in{'name'}">
<input type=hidden name=pass value="$in{'pass'}">
<input type=hidden name=k_id value="$in{'k_id'}">
<input type=hidden name=town_no value=$in{'town_no'}>
<input type=hidden name=yuusi_kanougaku value="$yuusi_kanougaku">
ご返済は毎日(ログイン時)、返済回数に応じて5〜14%の利子がついた額が普通預金口座より引き落とされます。<br>
また、完済するまでは次にお金を借りることはできません。
<select name="hensai_kaisuu">
<option value="$kai12×12">12回払い(日額$kai12円)</option>
<option value="$kai24×24">24回払い(日額$kai24円)</option>
<option value="$kai36×36">36回払い(日額$kai36円)</option>
<option value="$kai48×48">48回払い(日額$kai48円)</option>
<option value="$kai60×60">60回払い(日額$kai60円)</option>
<option value="$kai72×72">72回払い(日額$kai72円)</option>
<option value="$kai84×84">84回払い(日額$kai84円)</option>
<option value="$kai96×96">96回払い(日額$kai96円)</option>
<option value="$kai108×108">108回払い(日額$kai108円)</option>
<option value="$kai120×120">120回払い(日額$kai120円)</option>
</select>
<input type=submit value="借りる">
</form>
</td></tr>
</table>
<div align="center"><a href=\"javascript:history.back()\"> [前の画面に戻る] </a></div>
</body></html>
EOM
exit;
} #else(借り入れ処理で無い場合)の閉じ
}
「kojin_loan.cgi」ファイルを個人フォルダ内に作成し、ローン査定額を保存します。
借り入れが実行された時に「kojin_loan.cgi」ファイルに保存された内容と比較し、一致しない場合は取引を中止します。
前後の内容
| 俺ペナ← | TOWN | ||||
| 設置方法← | セキュリティ対策 | ||||
| 「街コンテスト」の不正防止← | 「銀行ローン」の不正防止 | →「掲示板」の不正防止 | |||
野良猫タウン
当サイトでは、「野良猫タウン」として「TOWN」を設置・公開しています。
オリジナル改造を施した「のんびりまったりタウン」です。
100名限定で楽しんで頂ければ、嬉しいです♪
【劇ぱわ改造設置支援サイト】Take it easy ! RYOQUEST presents
『野良猫のCGI講座』は、
【劇ぱわ改造設置支援サイト】Take it easy ! RYOQUEST presents のコンテンツとして、虎猫が公開しています。
「劇空間ぱわふるリーグ2 ver 3.00b(劇ぱわ)」は、
『きままなまま』で管理人にーやん様が作成・無料配布されているCGI/Perlによる野球ゲームです。
「TOWN」は、
『Brassiere』で配布されている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講座』からアクセスして下さい。
但し、更新は一切していません。
(※「旧:野良猫のCGI講座」には「TOWN」に関する記述はありません。)