#!/usr/bin/perl #Perlのパスを指定 #普通は、『#!/usr/bin/perl』or『#!/usr/local/bin/perl』を指定 #プロバイダによっては、『#!/usr/local/bin/perl5』の場合もあり。 ############################################### #このscriptの著作権は・・・ #HPサービス(hp@bird.to・hp@siroyagi.com)に帰属しています。 #よって、改竄する事は許可しますが、著作権の表示は削除しないで下さい。 #また、このscriptによる如何なる損害も賠償しませんので・・・ #予め、ご了承下さい。 #尚、バグ情報などは、HPサービス(hp@siroyagi.com)まで #お知らせ頂けると有難いです。 #また、利用にあたっては、HPサービス(http://hp.bird.to/)に従って下さい。 ####################使用方法###################### #一番上のPerlのパスを合わせて転送し、パーミッションを設定すれば・・・ #それで、使えるようになります。 #このCGIのカスタマイズは、ほとんどインターネット上で出来るように #作ってありますので、ファイル内容を、特に変更する必要はありません。 ####################変数設定###################### #(★☆)は、変更可能部分(よく分からない人は、変更しない事!!) #(★)は、変更しない方がいい部分 #(☆)は、変更した方がいい部分 # 管理人専用コマンドの暗証番号(秘密の暗号に書き換えて下さい)(☆) my $secret='4321'; # カスタマイズ用ファイル(★☆) my $custom_file='./DATA/horse_custom.cgi'; # 予想レースデータファイル名(★☆) my $data_file = './DATA/horse_race.cgi'; # 投票データファイル名(★☆) my $vote_file = './DATA/horse_vote.cgi'; # 前回レース結果ファイル名(★☆) my $result_file = './DATA/horse_result.cgi'; # 会員名簿データファイル名(★☆) my $member_file = './DATA/horse_data.cgi'; # スタイルシートファイル名(★☆) my $style_file='./DATA/horse_style.cgi'; # Time::Localが使えるサーバかどうか?(0は使える。1は使えない)(★☆) # @niftyは使えないので、1に書き換える事。 # その他のサーバは、たいてい使えますので、そのままで可。 # また、同時に357行目付近にあります『use Time::Local;』を削除する事。 my $timelocal_use=0; # タイトルの名前(★☆) my $html_title = '競馬予想SP'; #HOMEのURL(☆) my $home_url= 'http://hp.bird.to/info/horse.html'; #トップ画面に表示する案内文(★☆) my $titlemessage="

$html_title

このCGIは会員制となっておりますので・・・
まずは、会員登録して下さいませ。
"; #ランキング画面に表示する案内文(★☆) my $rankingmessage=''; #今回の投票内容画面に表示する案内文(★☆) my $votemessage='

今回の投票内容

'; #今回の予想内容画面に表示する案内文(★☆) my $markmessage='

今回の予想内容

'; #前回の結果画面に表示する案内文(★☆) my $resultmessage=''; #会員の登録・削除をユーザーにも認める(0=認める、1=認めない)(★☆) my $userregist= 0; #パスワード配布にメールを使用(0=使用しない、1=使用する)(★☆) my $mailuse= 0; #登録があると、管理人にメールする(0=しない、1=する)(メールを使う場合に設定する)(★☆) my $keepermail= 0; #このCGIのURLをフルパスで指定(メールを使う場合に設定する)(☆) my $horse_url= 'http://hp.bird.to/cgi-bin/horse.cgi'; #sendmailのパス(メールを使う場合に設定する)(☆) my $sendmail= '/usr/lib/sendmail'; #あなたのメールアドレス(メールを使う場合に設定する)(☆) my $my_address= ''; #CGIから送信されるメールの件名に記載される文字(メールを使う場合に設定する)(★☆) my $default_subject="$html_title"; #登録禁止メールアドレス(複数のメールアドレスを禁止する場合は、各メールアドレスを
で連結する)(メールを使う場合に設定する)(☆) my $limitaddress= ''; #1ページに表示するログ数(★☆) my $top_max=10; #時間表示方法(0=表示なし、1=月日時分全部表示、2=月日のみ表示)(★☆) my $date_way =2; #リンク時のウィンドウ出現方法('new'=別、'_top'=同じ)(★☆) my $href_target='new'; #インラインリンク設定(0=使用しない、1=URL、2=文字、3=画像)(★☆) my $inlinelink=1; my $inline_word='ここをクリック!!';#文字の場合 my $inline_image='';#画像の場合 #名前の最大文字数(★☆) my $namelength =20; #コメントの最大文字数(★☆) my $commentlength =3000; #アドレスの最大文字数(★☆) my $addresslength =50; #バックの色(★☆) my $bgcolor='white'; #バックのイラスト(★☆) my $background='./IMAGE/horse2.gif'; #文字の色(★☆) my $textcolor='black'; #リンクの色(★☆) my $linkcolor ='red'; #一度訪れたリンクの色(★☆) my $vlinkcolor='red'; #投稿の文字色(★☆) my $newscolor='dimgray'; #投稿の題名色(★☆) my $subcolor='blue'; #投稿のバックの色(★☆) my $tdcolor='floralwhite'; #投稿のバックイラスト(★☆) my $tdground='./IMAGE/horse1.gif'; #CGIのURL(★☆) my $script_url = './horse.cgi'; #フッターに挿入するタグ(★☆) my $hooter ="[TOP] [HOME]"; #通貨単位(★☆) my $yen='円'; #印の種類(種類は増減出来ます)(★☆) my @mark=('◎','◯','▲','△','×','穴'); #投票種類(★) my @vote_array=('3連複','馬連','馬単','枠連','ワイド','単勝','複勝'); #3連単を導入する(0=導入しない。1=導入する)(★☆) my $rentan=0; push(@vote_array,'3連単') if($rentan==1); #投票フォーム数(★☆) my $limit_vote=5; #最大馬数(デフォルトは18頭フルゲート)(★) my $max_horse=18; #賭け金の下限(デフォルトは100円)(★☆) my $minimum_money=100; #新規登録時に配布する軍資金額(デフォルトでは、10000円を登録時に配布)(★☆) my $regist_money=10000; #レース毎に配布する軍資金額($max_money=0;は、軍資金を配布しない)(★☆) my $week_money=0; #1レースの賭け金総額の上限($max_money=0;は、軍資金額が上限になります。軍資金額がなくなると賭ける事が出来ません)(★☆) #($max_money=10000;としますと、レース毎に1万円まで賭ける事が出来ます。軍資金額がなくても賭ける事が出来ます) my $max_money=10000; #レース毎に配布される軍資金が余った場合の措置(次回レースに持ち越せない=0、持ち越せる=1)(★☆) my $pool=0; #レース表のサブ項目(★☆) my $subcomment='印'; #出走取消し時に馬名に付ける印(★☆) my $torikesi_mark='除外'; #トップ画面の出走表と投票フォームの配置(0=上下。1=左右)(★☆) my $top_mode=0; #枠の色(★) my @hat_color=('white','gray','red','blue','yellow','green','orange','pink'); #枠の番号(★) my @hat_num=('1','2','3','4','5','6','7','8'); # 排他制御として使用するディレクトリ名(★☆) my $lockname='./DATA/horselock'; #perlのバージョンを指定(★) require 5.001; #cgi-lib.plのパスを指定(★) require "./cgi-lib.pl"; #jcode.plのパスを指定(★) require "./jcode.pl"; #custom.plのパスを指定(★) require "./custom_horse.pl"; #時差調整(海外サーバ等の場合は、ここで時差を調節して下さい)(★☆) #例:9時間の時差の場合:my $time_adjustment=60*60*9; my $time_adjustment=0; #現在time(★) my $now_time=time(); # 排他制御使用関数(★) my $expire = 3*60; # 最大排他制御時間( sec ) my $num_retry = 5; # 最大再試行回数 my $retry_time = 1; # 排他制御待ち時間( sec ) # Cookie の有効期間(現在60日に設定)(★) my $expires_time= &expires(60); # Cookie の有効期間を設定(★) my $expires="expires=$expires_time"; # Cookieの名前(★) my $C_NAME='HORSE1'; #sendmail に付加するオプション(★) my $mailoption= ' -t'; #エラーメール対策オプション(★) my $envelope= '-f '; #パスワード構成文字(0=英数小文字。1=数字。2=英語小文字。3=英語大文字)(★☆) #CGIの初期導入時にのみ、この設定が有効となりますので・・・ #一度でも、CGIを呼び出してしまいますと、この設定は無効となります。 my $code_select=0; #パスワード文字数関連数字(パスワード構成文字との関係で一概に何文字になるかは言えないが、この数値を大きくするとパスワード文字数が増える)(★☆) my $first_number=1000; #パスワード文字数関連数字(この数値を大きくすると、似通ったパスワードにならない)(★☆) my $rand_number=36; ##########ここより先は、Perlの知識が必要です!!########## ##########よく分からない人は、立ち入るべからず########## my %params; &ReadParse(\%params); $name = &jcode'sjis($params{'name'});#名前 $pass = &jcode'sjis($params{'pass'});#パスワード $email = &jcode'sjis($params{'email'});#メールアドレス $comment = &jcode'sjis($params{'comment'});#コメント $page = $params{'page'};#リクエストページ $command = $params{'command'};#コマンド $secret_pass = &jcode'sjis($params{'secret_pass'});#管理人パス $mymark = $params{'mymark'};# $vote_kind = $params{'vote_kind'};# $vote_num1 = $params{'vote_num1'};# $vote_num2 = $params{'vote_num2'};# $vote_num3 = $params{'vote_num3'};# $vote_money = $params{'vote_money'};# my (@mymark)=split(/\0/,$mymark);# my (@vote_kind)=split(/\0/,$vote_kind);# my (@vote_num1)=split(/\0/,$vote_num1);# my (@vote_num2)=split(/\0/,$vote_num2);# my (@vote_num3)=split(/\0/,$vote_num3);# my (@vote_money)=split(/\0/,$vote_money);# $p_year = $params{'p_year'};# $p_month = $params{'p_month'};# $p_day = $params{'p_day'};# $p_hour = $params{'p_hour'};# $p_minute = $params{'p_minute'};# $race_comment = &jcode'sjis($params{'race_comment'});# $horse_name = &jcode'sjis($params{'horse_name'});# $horse_comment = &jcode'sjis($params{'horse_comment'});# my (@horse_name)=split(/\0/,$horse_name);# my (@horse_comment)=split(/\0/,$horse_comment);# $my_money = $params{'my_money'};#軍資金額 $repair_pass = &jcode'sjis($params{'repair_pass'});#修正パス $repair_delete = $params{'repair_delete'};#削除or修正 $target = $params{'target'};#削除・修正データ my (@target)=split(/\0/,$target);#削除データ $doutyaku = $params{'doutyaku'};#同着時は「1」 $style = $params{'style'};#スタイルシート $repair_[0] = &jcode'sjis($params{'repair_0'}); $repair_[1] = &jcode'sjis($params{'repair_1'}); $repair_[2] = &jcode'sjis($params{'repair_2'}); $repair_[3] = &jcode'sjis($params{'repair_3'}); $repair_[4] = $params{'repair_4'}; $repair_[5] = $params{'repair_5'}; $repair_[6] = $params{'repair_6'}; $repair_[7] = $params{'repair_7'}; $repair_[8] = $params{'repair_8'}; $repair_[9] = $params{'repair_9'}; $repair_[10] = $params{'repair_10'}; $repair_[11] = $params{'repair_11'}; $repair_[12] = $params{'repair_12'}; $repair_[13] = &jcode'sjis($params{'repair_13'}); $repair_[14] = $params{'repair_14'}; $repair_[15] = $params{'repair_15'}; $repair_[16] = $params{'repair_16'}; $repair_[17] = $params{'repair_17'}; $repair_[18] = &jcode'sjis($params{'repair_18'}); $repair_[19] = $params{'repair_19'}; $repair_[20] = $params{'repair_20'}; $repair_[21] = $params{'repair_21'}; $repair_[22] = $params{'repair_22'}; $repair_[23] = $params{'repair_23'}; $repair_[24] = $params{'repair_24'}; $repair_[25] = $params{'repair_25'}; $repair_[26] = $params{'repair_26'}; $repair_[27] = &jcode'sjis($params{'repair_27'}); $repair_[28] = $params{'repair_28'}; $repair_[29] = $params{'repair_29'}; $repair_[30] = $params{'repair_30'}; $repair_[31] = &jcode'sjis($params{'repair_31'}); $repair_[32] = &jcode'sjis($params{'repair_32'}); $repair_[33] = &jcode'sjis($params{'repair_33'}); $repair_[34] = &jcode'sjis($params{'repair_34'}); $repair_[35] = $params{'repair_35'}; $repair_[36] = $params{'repair_36'}; $repair_[37] = $params{'repair_37'}; $repair_[38] = $params{'repair_38'}; $repair_[39] = $params{'repair_39'}; $repair_[40] = $params{'repair_40'}; shift @repair_; if($ENV{'QUERY_STRING'} ne ''){ ($call_num)=$ENV{'QUERY_STRING'}; if($call_num=~/^[0-9]+$/){ $command='call_list'; } }#予想一覧から投票内容が呼び出された場合 if($timelocal_use==0 && $p_year ne '' && $p_month ne '' && $p_day ne '' && $p_hour ne '' && $p_minute ne ''){ my $year=$p_year-1900; my $month=$p_month-1; my $day=$p_day; my $hour=$p_hour; my $minute=$p_minute; use Time::Local;#@nifty等のTime::Local機能が使えないサーバでは、この行を削除して下さい。 $permit_time=timelocal(0,$minute,$hour,$day,$month,$year); }#発走時刻の計算(@nifty以外の場合) ####################条件分岐#################### if(defined ($dlock_id=&LockOn($lockname))){ if($repair_delete eq 'begin'){ my @custom=&custom_open($custom_file,$html_title,$titlemessage,$rankingmessage,$bgcolor,$background,$textcolor,$linkcolor,$vlinkcolor,$newscolor,$subcolor,$tdcolor,$top_max,$secret,$tag,$date_way,$href_target,$inlinelink,$hooter,$limit_vote,$max_money,$userregist,$mailuse,$sendmail,$keepermail,$horse_url,$my_address,$default_subject,$limitaddress,$subcomment,$tdground,$yen,$votemessage,$markmessage,$resultmessage,$minimum_money,$regist_money,$week_money,$pool,$top_mode,$time_adjustment); my ($html_title,$titlemessage,$rankingmessage,$bgcolor,$background,$textcolor,$linkcolor,$vlinkcolor,$newscolor,$subcolor,$tdcolor,$top_max,$secret,$tag,$date_way,$href_target,$inlinelink,$hooter,$limit_vote,$max_money,$userregist,$mailuse,$sendmail,$keepermail,$horse_url,$my_address,$default_subject,$limitaddress,$subcomment,$tdground,$yen,$votemessage,$markmessage,$resultmessage,$minimum_money,$regist_money,$week_money,$pool,$top_mode,$time_adjustment)=@custom; unlink($custom_file) if($secret_pass eq $secret); } my @custom=&custom_open($custom_file,$html_title,$titlemessage,$rankingmessage,$bgcolor,$background,$textcolor,$linkcolor,$vlinkcolor,$newscolor,$subcolor,$tdcolor,$top_max,$secret,$tag,$date_way,$href_target,$inlinelink,$hooter,$limit_vote,$max_money,$userregist,$mailuse,$sendmail,$keepermail,$horse_url,$my_address,$default_subject,$limitaddress,$subcomment,$tdground,$yen,$votemessage,$markmessage,$resultmessage,$minimum_money,$regist_money,$week_money,$pool,$top_mode,$time_adjustment);#カスタマイズ類を取得 foreach(@custom){ $_=~s/,/,/og; } ($html_title,$titlemessage,$rankingmessage,$bgcolor,$background,$textcolor,$linkcolor,$vlinkcolor,$newscolor,$subcolor,$tdcolor,$top_max,$secret,$tag,$date_way,$href_target,$inlinelink,$hooter,$limit_vote,$max_money,$userregist,$mailuse,$sendmail,$keepermail,$horse_url,$my_address,$default_subject,$limitaddress,$subcomment,$tdground,$yen,$votemessage,$markmessage,$resultmessage,$minimum_money,$regist_money,$week_money,$pool,$top_mode,$time_adjustment)=@custom;#カスタマイズ類を設定 $now_time+=$time_adjustment;#時差調節 foreach('name','email','comment'){ ${$_}=~s/&/&/og; ${$_}=~s//>/og if($tag==0); ${$_}=~s/,/,/og; }#タグの無効化 for($i=0;$i<@repair_;$i++){ $repair_[$i]=~s/,/,/og; }#カンマの無害化 print html_header($html_title,$name,$pass) unless($command=~/repair_custom/ && $secret_pass eq $secret); if($secret_pass eq $secret && $command eq '' && $repair_delete ne 'begin'){ &data_open; &target_list; } elsif($command eq 'repair_custom_beginner' && $secret_pass eq $secret){ ($html_title,$titlemessage,$rankingmessage,$bgcolor,$background,$textcolor,$linkcolor,$vlinkcolor,$newscolor,$subcolor,$tdcolor,$top_max,$secret,$tag,$date_way,$href_target,$inlinelink,$hooter,$limit_vote,$max_money,$userregist,$mailuse,$sendmail,$keepermail,$horse_url,$my_address,$default_subject,$limitaddress,$subcomment,$tdground,$yen,$votemessage,$markmessage,$resultmessage,$minimum_money,$regist_money,$week_money,$pool,$top_mode,$time_adjustment)=&repair_custom($custom_file,@repair_) if($repair_delete ne 'begin'); print html_header($html_title); &data_open; &looking_list; } elsif($command eq 'repair_custom_style' && $secret_pass eq $secret){ &style_save($style); print html_header($html_title); &data_open; &looking_list; }#スタイルシートをセーブ elsif($command eq 'change' && $secret_pass eq $secret){ if($repair_delete eq 'make_race'){ &data_save; &data_open; &looking_list; }#レース作成・修正の場合 elsif($repair_delete eq 'make_result'){ &data_open; &make_result; }#レース結果作成の場合 elsif($repair_delete eq 'make_result_doutyaku'){ $doutyaku=1; &data_open; &make_result; }#レース結果作成の場合(同着時専用) elsif($repair_delete eq 'backup'){ foreach($data_file,$vote_file,$result_file,$member_file){ &backup_load($_); }#バックアップをロードする &data_open; &target_list; }#レース結果作成の場合 elsif($repair_delete eq 'make_result2'){ if(open(DATA,"$data_file")){ my @line = ; close(DATA); if(@line>0){ for($i=0;$i<@line;$i++){ if($i>1){ my ($horse_num,$horse_name) = split(/,/,$line[$i]); $horse_names{$horse_num}=$horse_name; }#結果ファイル用馬名データを取得 } foreach($data_file,$vote_file,$result_file,$member_file){ &backup_save($_); }#バックアップを取っておく &result_save; if(open(DATA,">$data_file")){ print DATA ""; close(DATA); } if(open(DATA,">$vote_file")){ print DATA ""; close(DATA); } } } &result_open; &result_list; }#レース結果作成の場合 elsif($repair_delete eq 'member_list'){ &member_open; &member_list; }#会員名簿一覧 elsif($repair_delete eq 'member_regist'){ ®ist_list; }#会員登録 elsif($repair_delete eq 'ranking_reset'){ &ranking_reset; &member_open; &ranking_list; }#軍資金額リセット elsif($repair_delete eq 'member_repair'){ if(@target>0){ &member_open; &repair_list; } else{ &member_open; &member_list; } }#会員修正(前) elsif($repair_delete eq 'member_repair2'){ &member_repair; &member_open; &member_list; }#会員修正(後) elsif($repair_delete eq 'member_delete'){ &member_open; &member_delete(@target); &member_list; }#会員削除 elsif($repair_delete eq 'custom_beginner' || $repair_delete eq 'custom_pro'){ &custom_beginner($repair_delete,$script_url,$html_title,$titlemessage,$rankingmessage,$bgcolor,$background,$textcolor,$linkcolor,$vlinkcolor,$newscolor,$subcolor,$tdcolor,$top_max,$secret,$tag,$date_way,$href_target,$inlinelink,$hooter,$limit_vote,$max_money,$userregist,$mailuse,$sendmail,$keepermail,$horse_url,$my_address,$default_subject,$limitaddress,$subcomment,$tdground,$yen,$votemessage,$markmessage,$resultmessage,$minimum_money,$regist_money,$week_money,$pool,$top_mode,$time_adjustment,$secret_pass); }#カスタマイズする場合 elsif($repair_delete eq 'style'){ &style_list; }#スタイルシートを利用する elsif($repair_delete eq 'color'){ &color_list($script_url); }#色の見本を場合 elsif($repair_delete eq 'background'){ &background_list($script_url); }#背景イラストを見る場合 else{ &data_open; &target_list; }#指定なしの場合 } elsif($command eq 'member_regist' && $userregist==0){ ®ist_list; } elsif($command eq 'member_delete' && $userregist==0){ &delete_list; } elsif($command eq 'ranking'){ &member_open; &ranking_list; } elsif($command eq 'this_vote'){ &data_open; &vote_open; &vote_list; } elsif($command eq 'this_mark'){ &data_open; &vote_open; &mark_list; } elsif($command eq 'result_list'){ &result_open; &result_list; } elsif($command eq 'call_list'){ &data_open; &vote_open; &call_list; } elsif($command eq 'info'){ &info_list; } elsif($command eq 'member_regist2'){ if($name eq ''){ $error_code='名前を記入して下さい'; } elsif($email eq ''){ $error_code='メールアドレスを記入して下さい'; } elsif(!($email=~/^[0-9a-z_\.\-]+\@([0-9a-z_\-]+\.)+[0-9a-z_\-]+$/i)){ $error_code='メールアドレスを正しく記入して下さい'; } elsif($namelength/,$limitaddress); foreach(@limitaddress){ if($email eq $_){ $error_code='登録出来ませんでした。管理人さんに問い合わせてみて下さい。'; last; } } } if($error_code eq ''){ &member_open; foreach(keys %member_names){ if($member_names{$_} eq $name){ $error_code='名前が既に登録されていますので、別の名前にして下さい'; last; } elsif($member_mails{$_} eq $email){ $error_code='メールアドレスが既に登録されています'; last; } } } if($error_code eq ''){ if($error_code eq ''){ &member_save; if($mailuse eq '1'){ &mailsend; &mailsend_keeper if($keepermail==1); if($error_code ne ''){ &member_delete($new_password); ®ist_success_list3; } else{ ®ist_success_list2; } }#メールで配布 else{ ®ist_success_list; }#HTMLで配布 } else{ ®ist_list; } } else{ ®ist_list; } } elsif($command eq 'member_delete2'){ &member_open; if($member_passs{$pass} eq $pass && $pass ne '' && $member_names{$pass} eq $name){ &member_delete($pass); &delete_success_list; } else{ $error_code='記入データは会員登録されていません'; &delete_list; } } elsif($command eq 'vote'){ &member_open; &data_open; if($member_passs{$pass} eq $pass && $pass ne '' && $member_names{$pass} eq $name){ my @horse_num=sort{ $a<=>$b }keys %horse_names; my $allhorse_num=@horse_num;#全頭数 my $allwaku_num;#総枠数 $allwaku_num=8 if($allhorse_num>=8); $allwaku_num=$allhorse_num if($allhorse_num<8); for($i=0;$i<$limit_vote;$i++){ my @temp_num;#馬番号修正用 #全角数字を半角に変換 $vote_money[$i]=~s/$yen//go; $vote_money[$i]=~s/0/0/go; $vote_money[$i]=~s/1/1/go; $vote_money[$i]=~s/2/2/go; $vote_money[$i]=~s/3/3/go; $vote_money[$i]=~s/4/4/go; $vote_money[$i]=~s/5/5/go; $vote_money[$i]=~s/6/6/go; $vote_money[$i]=~s/7/7/go; $vote_money[$i]=~s/8/8/go; $vote_money[$i]=~s/9/9/go; $minimum_money=100 if($minimum_money eq ''); $minimum_money=1 if($minimum_money==0); $vote_money[$i]=int($vote_money[$i]/$minimum_money)*$minimum_money;#小数点は切り捨て next if($vote_money[$i]<$minimum_money); if($vote_array[$vote_kind[$i]] ne '馬単' && $vote_array[$vote_kind[$i]] ne '3連単'){ @temp_num=($vote_num1[$i],$vote_num2[$i],$vote_num3[$i]); @temp_num=sort{ $a<=>$b } @temp_num; $vote_num1[$i]=$temp_num[0]; $vote_num2[$i]=$temp_num[1]; $vote_num3[$i]=$temp_num[2]; }#馬単以外は、小さい順に my $zen; if($vote_num1[$i]>90){ $zen++; }#全流しを含む場合 if($vote_num2[$i]>90){ $zen++; }#全流しを含む場合 if($vote_num3[$i]>90){ $zen++; }#全流しを含む場合 if($vote_num1[$i]==0){ if($vote_num2[$i]==0){ $vote_num1[$i]=$vote_num3[$i]; $vote_num3[$i]=0; } else{ $vote_num1[$i]=$vote_num2[$i]; $vote_num2[$i]=0; } } if($vote_num2[$i]==0){ $vote_num2[$i]=$vote_num3[$i]; $vote_num3[$i]=0; }#空白番号を除去し左詰めにする if($vote_array[$vote_kind[$i]] eq '単勝' && $vote_num1[$i] != 0){ push(@save,"$vote_kind[$i]::$vote_num1[$i]::0::0::$vote_money[$i]"); if($vote_num2[$i]>90){ $zen--; } if($vote_num3[$i]>90){ $zen--; } if($zen>0){ $vote_money[$i]=$vote_money[$i]*$allhorse_num; } }#単勝の場合 elsif($vote_array[$vote_kind[$i]] eq '複勝' && $vote_num1[$i] != 0){ push(@save,"$vote_kind[$i]::$vote_num1[$i]::0::0::$vote_money[$i]"); if($vote_num2[$i]>90){ $zen--; } if($vote_num3[$i]>90){ $zen--; } if($zen>0){ $vote_money[$i]=$vote_money[$i]*$allhorse_num; } }#複勝の場合 elsif($vote_array[$vote_kind[$i]] eq '枠連'){ if($vote_num3[$i]>90){ $zen--; } if($vote_num1[$i]<=$allwaku_num && $vote_num2[$i]<=$allwaku_num && $vote_num1[$i]<=$vote_num2[$i]){ push(@save,"$vote_kind[$i]::$vote_num1[$i]::$vote_num2[$i]::0::$vote_money[$i]"); } elsif($zen>0){ push(@save,"$vote_kind[$i]::$vote_num1[$i]::$vote_num2[$i]::0::$vote_money[$i]"); if($zen==1){ my @true_num=&hat_color_num($allhorse_num);#枠番取得 my $check; my $k; for($k=0;$k<@true_num;$k++){ if($true_num[$k]==$vote_num1[$i]){ $check++; } } if($check>=2){ $vote_money[$i]=$vote_money[$i]*$allwaku_num; } else{ $vote_money[$i]=$vote_money[$i]*($allwaku_num-1); } } elsif($zen>=2){ my @waku_allvote_num=(0,1,3,6,10,15,21,28,29,30,31,32,33,34,35,36,36,36);#頭数による買い目総数 $vote_money[$i]=$vote_money[$i]*$waku_allvote_num[$allhorse_num]; } } else{ $total_money-=$vote_money[$i]; } }#枠連の場合 elsif($vote_array[$vote_kind[$i]] eq '馬連' && $vote_num1[$i] != 0 && $vote_num2[$i] != 0 && $vote_num1[$i]<$vote_num2[$i]){ push(@save,"$vote_kind[$i]::$vote_num1[$i]::$vote_num2[$i]::0::$vote_money[$i]"); if($vote_num3[$i]>90){ $zen--; } if($zen==1){ $vote_money[$i]=$vote_money[$i]*($allhorse_num-1); } elsif($zen>=2){ $vote_money[$i]=$vote_money[$i]*$allhorse_num*($allhorse_num-1)/2; } }#馬連の場合 elsif($vote_array[$vote_kind[$i]] eq 'ワイド' && $vote_num1[$i] != 0 && $vote_num2[$i] != 0 && $vote_num1[$i]<$vote_num2[$i]){ push(@save,"$vote_kind[$i]::$vote_num1[$i]::$vote_num2[$i]::0::$vote_money[$i]"); if($vote_num3[$i]>90){ $zen--; } if($zen==1){ $vote_money[$i]=$vote_money[$i]*($allhorse_num-1); } elsif($zen>=2){ $vote_money[$i]=$vote_money[$i]*$allhorse_num*($allhorse_num-1)/2; } }#ワイド番の場合 elsif($vote_array[$vote_kind[$i]] eq '馬単' && $vote_num1[$i] != 0 && $vote_num2[$i] != 0 && $vote_num1[$i] ne $vote_num2[$i]){ push(@save,"$vote_kind[$i]::$vote_num1[$i]::$vote_num2[$i]::0::$vote_money[$i]"); if($vote_num3[$i]>90){ $zen--; } if($zen==1){ $vote_money[$i]=$vote_money[$i]*($allhorse_num-1); } elsif($zen>=2){ $vote_money[$i]=$vote_money[$i]*$allhorse_num*($allhorse_num-1); } }#馬単の場合 elsif($vote_array[$vote_kind[$i]] eq '3連複' && $vote_num1[$i] != 0 && $vote_num2[$i] != 0 && $vote_num3[$i] != 0 && $vote_num1[$i] ne $vote_num2[$i] && $vote_num1[$i] ne $vote_num3[$i] && $vote_num2[$i] ne $vote_num3[$i]){ push(@save,"$vote_kind[$i]::$vote_num1[$i]::$vote_num2[$i]::$vote_num3[$i]::$vote_money[$i]"); if($zen==1){ $vote_money[$i]=$vote_money[$i]*($allhorse_num-2); } elsif($zen==2){ $vote_money[$i]=$vote_money[$i]*($allhorse_num-1)*($allhorse_num-2)/2; } elsif($zen==3){ $vote_money[$i]=$vote_money[$i]*$allhorse_num*($allhorse_num-1)*($allhorse_num-2)/6; } }#3連複の場合 elsif($vote_array[$vote_kind[$i]] eq '3連単' && $vote_num1[$i] != 0 && $vote_num2[$i] != 0 && $vote_num3[$i] != 0 && $vote_num1[$i] ne $vote_num2[$i] && $vote_num1[$i] ne $vote_num3[$i] && $vote_num2[$i] ne $vote_num3[$i]){ push(@save,"$vote_kind[$i]::$vote_num1[$i]::$vote_num2[$i]::$vote_num3[$i]::$vote_money[$i]"); if($zen==1){ $vote_money[$i]=$vote_money[$i]*($allhorse_num-2); } elsif($zen==2){ $vote_money[$i]=$vote_money[$i]*($allhorse_num-1)*($allhorse_num-2); } elsif($zen==3){ $vote_money[$i]=$vote_money[$i]*$allhorse_num*($allhorse_num-1)*($allhorse_num-2); } }#3連単の場合 else{ $total_money-=$vote_money[$i]; } $total_money+=$vote_money[$i]; } if($max_money==0){ $max_money=$member_moneys{$pass}; if($week_money>0){ $max_money+=$week_money; }#レース毎に小遣いがある場合は、上限に加算する }#上限が決まっていない場合は、軍資金額を上限にする if($total_money>$max_money){ $error_code='賭け金オーバーです'; } elsif(@save==0){ $error_code='記入に不備があります'; } elsif($commentlength$deadline_time){ $error_code='投票を締め切っております'; } if($error_code eq ''){ &vote_save; &vote_open; &vote_list; } else{ &looking_list; } } else{ $error_code='記入データは会員登録されていません'; &looking_list; } } else{ &data_open; &looking_list; } &LockOff($dlock_id); }#排他制御終了 else { &custom_open; print html_header($html_title); print &lock_error(); } print html_footer();#フッターを出力 exit 0; ###################htmlを表示################### sub looking_list{ my ($sec,$min,$hour,$day,$month,$year,$wday) = localtime($deadline_time); $month = ($month + 1); if($month < 10) { $month = "0$month"; } if($day < 10) { $day = "0$day"; } if($hour < 10) { $hour = "0$hour"; } if($min < 10) { $min = "0$min"; } my $date; $date = "投票締切時刻:($month月$day日 $hour時$min分)" if($deadline_time ne ''); $date = '現在レース表作成中' if($deadline_time eq ''); ($cookie_name,$cookie_pass) = get_cookie(); ($c_cook,$c_name)=split(/:/,$cookie_name); ($c_cook,$c_pass)=split(/:/,$cookie_pass); $c_name=$name if($name ne ''); $c_pass=$pass if($pass ne ''); my @horse_num=sort{ $a<=>$b }keys %horse_names; print < $error_code

END_OF_TEXT print('
') if($top_mode==1); print(''); print('') if($race_comment ne ''); print < END_OF_TEXT my $allhorse_num=@horse_num;#出走頭数 my @true_num=&hat_color_num($allhorse_num);#枠番と枠色を取得 my %double_nums; foreach(@true_num){ $double_nums{$_}++; }#枠に何頭いるかを抽出 foreach(@horse_num){ if($torikesi_mark ne '' && $horse_names{$_}=~/$torikesi_mark/){ $double_nums{$true_num[$_-1]}--; } } foreach(@horse_num){ $horse_comments{$_}=' ' if($horse_comments{$_} eq ''); my $temp_num=$_-1; my $hat_color=$hat_color[$true_num[$temp_num]-1]; my $horse_name=$horse_names{$_}; if($torikesi_mark ne '' && $horse_name=~/$torikesi_mark/){ $horse_name=~s/$torikesi_mark//go; $horse_name=''.$horse_name.''; }#出走取り消し馬には横線を引く print(''); } print('
',$race_comment,'
枠番馬番馬名$subcomment
',$true_num[$temp_num],'',$_,'',$horse_name,'',$horse_comments{$_},'
',$date,'
'); print('
') if($top_mode==1); print <
END_OF_TEXT for($i=0;$i<$limit_vote;$i++){ print ''; print ''; print ''; } print ''; my $mark_num=int(@mark/3); $mark_num+=1 if(@mark%3!=0); for($i=0;$i<$mark_num;$i++){ print (''); } print <
馬券投票フォーム
◆名前
◆パスワード
投票種類馬券金額
'; print '-'; print '-
予想
'); for($j=0;$j<3;$j++){ my $mark=shift(@mark); last if($mark eq ''); print ($mark,':'); } print ('
コメント
END_OF_TEXT print('
') if($top_mode==1); print <  

END_OF_TEXT print(''); print(''); print(''); print(''); print('') if($userregist==0); print('') if($userregist==0); print(''); print <
メニュー
ランキング
今回の投票内容
今回の予想内容
前回の結果
会員登録
会員退会
システム説明
 

競馬予\想SP Ver.1.30(C)HPサービス
END_OF_TEXT } #################ランキングhtmlを表示################# sub ranking_list{ print < END_OF_TEXT my @true_ranks=sort{ $member_moneys{$b}<=>$member_moneys{$a} }keys %member_moneys; my $i=1; my $j; my $k; foreach(@true_ranks){ if($turn==0){ if($member_moneys{$true_ranks[$k]}<$member_moneys{$true_ranks[$k-1]}){ $i=$i+1+$j; $j=0; } else{ $j++ if($k!=0); } } else{ if($member_moneys{$true_ranks[$k]}>$member_moneys{$true_ranks[$k-1]}){ $i=$i+1+$j; $j=0; } else{ $j++ if($k!=0); } } print('',"\n"); $k++; } print('
ランキング
順位名前軍資金額
',$i, '位', $member_names{$_}, '', $member_moneys{$_}, '
 

'); print < END_OF_TEXT print(''); print(''); print(''); print(''); print <
メニュー
トップに戻る
今回の投票内容
今回の予想内容
前回の結果
 

END_OF_TEXT } #################前回の結果htmlを表示################# sub result_list{ print("$resultmessage

"); print(''); print('') if($race_comment ne ''); my @horse_num=sort{ if($horse_results{$a}!=$horse_results{$b}){ $horse_results{$a}<=>$horse_results{$b} } else{ $a<=>$b } }keys %horse_results; my @true_num=&hat_color_num($allhorse_num);#枠番と枠色を取得 print('') if(@horse_num>0); foreach(@horse_num){ my $temp_num=$_-1; my $hat_color=$hat_color[$true_num[$temp_num]-1]; if($horse_results{$_}==100){ $horse_results{$_}=$torikesi_mark; } print(''); } print('
',$race_comment,'
着順馬番枠番馬名
',$horse_results{$_},'',$_,'',$true_num[$temp_num],'',$horse_names{$_},'
 

'); print(''); for($i=0;$i<@result_vote;$i++){ my @vote=split(/::/,$result_vote[$i]); my $kind=$vote_array[$vote[0]]; my $num1=$vote[1]; my $num2=$vote[2]; my $num3=$vote[3]; my $money=$vote[4]; if($num2 ne '0' && $num3 ne '0'){ $num1="$num1-$num2-$num3"; }#3連複 elsif($num2 ne '0'){ $num1="$num1-$num2"; }#馬連・馬単・枠連 print(''); } print('
払い戻し金
',$kind,'',$num1,'',$money,$yen,'
 

'); my @true_ranks=sort{ $vote_addmoneys{$b}<=>$vote_addmoneys{$a} }keys %vote_addmoneys; my $top_ranks; $top_ranks=@true_ranks-$page*$top_max if($top_max>@true_ranks-$page*$top_max); $top_ranks=$top_max if($top_max<=@true_ranks-$page*$top_max); $tdground='background="'.$tdground.'"' if($tdground ne ''); for($i=0;$i<$top_ranks;$i++){ my $name=$vote_names{$true_ranks[$i+$page*$top_max]}; my $addmoney=$vote_addmoneys{$true_ranks[$i+$page*$top_max]}; my $soneki=$vote_sonekis{$true_ranks[$i+$page*$top_max]}; my $comment=$vote_comments{$true_ranks[$i+$page*$top_max]}; my @vote_save=split(/,/,$vote_saves{$true_ranks[$i+$page*$top_max]}); my @mymark_save=split(/=/,$vote_marks{$true_ranks[$i+$page*$top_max]}); $addmoney=0 if($addmoney eq ''); $soneki=0 if($soneki eq ''); $soneki='+'.$soneki if($soneki>0); print(''); } elsif($week_money>0 && $pool==1){ print('
収支:',$soneki,$yen,''); } print(''); print('') if($comment ne ''); print('
',$name,' (払戻金:',$addmoney,$yen,')
'); for($j=0;$j<@vote_save;$j++){ my $one; my @one=split(/::/,$vote_save[$j]); $one[1]='全' if($one[1]>90); $one[2]='全' if($one[2]>90); $one[3]='全' if($one[3]>90); if($one[0]==0 || $one[0]==7){ $one="$vote_array[$one[0]]:$one[1]-$one[2]-$one[3]☆☆$one[4]$yen"; } elsif($one[0]>=1 && $one[0]<5){ $one="$vote_array[$one[0]]:$one[1]-$one[2]☆☆$one[4]$yen"; } else{ $one="$vote_array[$one[0]]:$one[1]☆☆$one[4]$yen"; } print('',$one,'
'); } if($week_money==0){ print('
収支:',$soneki,$yen,'
'); for($j=0;$j<@mymark_save;$j++){ next if($mymark_save[$j] eq ''); print('',$mark[$j],':',$befor_names{$mymark_save[$j]},'
'); } if(@mymark_save==0){ print(' '); } print('
',$comment,'
 

'); } print('

') if($page>0); print('
') if(@true_ranks>$top_ranks+$top_max*$page); print < END_OF_TEXT print(''); print(''); print(''); print(''); print <
メニュー
トップに戻る
ランキング
今回の投票内容
今回の予想内容
 

END_OF_TEXT } ####################投票一覧html#################### sub vote_list{ print("$votemessage

"); my @true_ranks=sort{ $vote_times{$b}<=>$vote_times{$a} }keys %vote_times; my $top_ranks; $top_ranks=@true_ranks-$page*$top_max if($top_max>@true_ranks-$page*$top_max); $top_ranks=$top_max if($top_max<=@true_ranks-$page*$top_max); $tdground='background="'.$tdground.'"' if($tdground ne ''); for($i=0;$i<$top_ranks;$i++){ my $name=$vote_names{$true_ranks[$i+$page*$top_max]}; my $date=$vote_dates{$true_ranks[$i+$page*$top_max]}; my $comment=$vote_comments{$true_ranks[$i+$page*$top_max]}; my $total_money=$vote_total_moneys{$true_ranks[$i+$page*$top_max]}; my @vote_save=split(/,/,$vote_saves{$true_ranks[$i+$page*$top_max]}); my @mymark_save=split(/=/,$vote_marks{$true_ranks[$i+$page*$top_max]}); print(''); print(''); print('') if($comment ne ''); print('
',$name,' ',$date,'
'); for($j=0;$j<@vote_save;$j++){ my $one; my @one=split(/::/,$vote_save[$j]); $one[1]='全' if($one[1]>90); $one[2]='全' if($one[2]>90); $one[3]='全' if($one[3]>90); if($one[0]==0 || $one[0]==7){ $one="$vote_array[$one[0]]:$one[1]-$one[2]-$one[3]☆☆$one[4]$yen"; } elsif($one[0]>=1 && $one[0]<5){ $one="$vote_array[$one[0]]:$one[1]-$one[2]☆☆$one[4]$yen"; } else{ $one="$vote_array[$one[0]]:$one[1]☆☆$one[4]$yen"; } print('',$one,'
'); } print('
合計:',$total_money,$yen,'') if(@vote_save>0); print('
'); for($j=0;$j<@mymark_save;$j++){ next if($mymark_save[$j] eq ''); print('',$mark[$j],':',$horse_names{$mymark_save[$j]},'
'); } if(@mymark_save==0){ print(' '); } print('
',$comment,'
 

'); } print('

') if($page>0); print('
') if(@true_ranks>$top_ranks+$top_max*$page); print < END_OF_TEXT print(''); print(''); print(''); print(''); print <
メニュー
トップに戻る
ランキング
今回の予想内容
前回の結果
END_OF_TEXT } ####################予想一覧html#################### sub mark_list{ print("$markmessage

"); my @horse_num=sort{ $a<=>$b }keys %horse_names; my $allhorse_num=@horse_num;#出走頭数 my @true_num=&hat_color_num($allhorse_num);#枠番と枠色を取得 if(@horse_num>0){ print(''); foreach(@horse_num){ my $temp_num=$_-1; my $hat_color=$hat_color[$true_num[$temp_num]-1]; print(''); } print(''); for($i=0;$i<@horse_num;$i++){ print(''); } print(''); my $change1='ー'; my $change2='|'; for($i=0;$i<@horse_num;$i++){ $horse_names{$horse_num[$i]}=~s/\Q$change1\E/$change2/go; if($torikesi_mark ne '' && $horse_names{$horse_num[$i]}=~/$torikesi_mark/){ $horse_names{$horse_num[$i]}=~s/$torikesi_mark//go; $horse_names{$horse_num[$i]}=''.$horse_names{$horse_num[$i]}.''; }#出走取り消し馬には横線を引く print(''); } print(''); my @true_ranks=sort{ $vote_times{$b}<=>$vote_times{$a} }keys %vote_times; my $top_ranks; $top_ranks=@true_ranks-$page*$top_max if($top_max>@true_ranks-$page*$top_max); $top_ranks=$top_max if($top_max<=@true_ranks-$page*$top_max); my $window_size="width=517,height=167,resizable"; $window_size="\'".$window_size."\'"; for($i=0;$i<$top_ranks;$i++){ my $name=$vote_names{$true_ranks[$i+$page*$top_max]}; my $num=$vote_nums{$true_ranks[$i+$page*$top_max]}; my @mymark_save=split(/=/,$vote_marks{$true_ranks[$i+$page*$top_max]}); print('"); for($j=0;$j<@horse_num;$j++){ my $check; my $mark_rank; for($k=0;$k<@mymark_save;$k++){ if($horse_num[$j] eq $mymark_save[$k]){ $check=1; $mark_rank=$k; last; } } if($check==1){ print(''); } else{ print(''); } } print(''); } print('
枠番',$true_num[$temp_num],'
馬番',$horse_num[$i],'
名前',$horse_names{$horse_num[$i]},'
'); print("$name',$mark[$mark_rank],' 
をクリックしますと、投票内容が表示されます 

'); print('

') if($page>0); print('
') if(@true_ranks>$top_ranks+$top_max*$page); } print < END_OF_TEXT print(''); print(''); print(''); print(''); print <
メニュー
トップに戻る
ランキング
今回の投票内容
前回の結果
END_OF_TEXT } ####################システム説明html#################### sub info_list{ if($pool==0){ $pool='軍資金に加算されない'; } elsif($pool==1){ $pool='軍資金に加算される'; } if($max_money==0){ if($week_money>0){ $max_money='現軍資金+レース毎に配布される軍資金'; } else{ $max_money='現軍資金'; } } elsif($max_money>0){ $max_money="$max_money $yen"; } print < システム説明 ◆新規登録時に配布される軍資金$regist_money $yen ◆レース毎に配布される軍資金$week_money $yen ◆レース毎に配布される軍資金の残りは?$pool ◆レースに賭ける事の出来る軍資金上限$max_money ◆レースに賭ける事の出来る軍資金下限$minimum_money $yen ($minimum_money $yen単位) レース毎に配布される軍資金が0$yenの場合は、現軍資金内で投票する事になります。
また、レースに賭ける事の出来る軍資金上限が、○○○○$yenと決まっている場合は・・・
たとえ、軍資金がマイナスであっても、○○○○$yenまでなら投票する事が可能\です。
しかし、○○○○$yenと決まっていない場合は、軍資金がなくなった時点で、投票不可能\となります。
(そう言う場合は、管理人さんに頼み込んで軍資金を融通してもらうしかありません)

レース毎に配布される軍資金の残りが、次回のレースに加算されない場合は・・・
レース毎に配布される軍資金を使い切った方が、お得です!
また、次回レースに加算される場合は・・・
自信のあるレースやG1等の重賞レースの為に、少しずつ貯金するのも良いでしょう!
(但し、レースに投票しないと、軍資金の配布を受ける事は出来ませんので、ご注意下さい)
補足説明 ◆まずは、会員登録し、パスワードを入手して下さい。
◆レース表\が作成されていて、投票締め切り時刻を過ぎていない場合は、投票する事が出来ます。
◆投票は、締め切り時刻内なら、何度でもやり直す事が出来ます。
◆投票内容は、「今回の投票内容」のコーナーで、見る事が出来ます。
◆予\想内容は、「今回の予\想内容」のコーナーで、見る事が出来ます。
◆投票馬券が的中すると、払戻金をもらう事が出来ます。
◆除外等で、投票馬券が無効の際も、払戻金をもらう事が出来ます。
◆払戻金は、「前回の結果」のコーナーに表\示されます。
◆前回の結果に表\示される「収支」は、レース毎に配布される軍資金等も含めたトータル収支です。
◆軍資金の多寡は、「ランキング」のコーナーで見る事が出来ます。
◆すべての権限は、管理人さんにありますので、管理人さんの指示に従って下さい。
 

END_OF_TEXT print(''); print(''); print(''); print(''); print(''); print <
メニュー
トップに戻る
ランキング
今回の投票内容
今回の予想内容
前回の結果
END_OF_TEXT } ##################個別投票内容html################## sub call_list{ foreach(keys %vote_nums){ if($call_num eq $vote_nums{$_}){ $call_pass=$_; last; } } if($call_pass ne ''){ my $name=$vote_names{$call_pass}; my $date=$vote_dates{$call_pass}; my $comment=$vote_comments{$call_pass}; my @vote_save=split(/,/,$vote_saves{$call_pass}); my @mymark_save=split(/=/,$vote_marks{$call_pass}); print(''); print(''); print('') if($comment ne ''); print('
',$name,' ',$date,'
'); for($j=0;$j<@vote_save;$j++){ my $one; my @one=split(/::/,$vote_save[$j]); $one[1]='全' if($one[1]>90); $one[2]='全' if($one[2]>90); $one[3]='全' if($one[3]>90); if($one[0]==0 || $one[0]==7){ $one="$vote_array[$one[0]]:$one[1]-$one[2]-$one[3]☆☆$one[4]$yen"; } elsif($one[0]>=1 && $one[0]<5){ $one="$vote_array[$one[0]]:$one[1]-$one[2]☆☆$one[4]$yen"; } else{ $one="$vote_array[$one[0]]:$one[1]☆☆$one[4]$yen"; } print('',$one,'
'); } print('
合計:',$total_money,$yen,'') if(@vote_save>0); print('
'); for($j=0;$j<@mymark_save;$j++){ next if($mymark_save[$j] eq ''); print('',$mark[$j],':',$horse_names{$mymark_save[$j]},'
'); } if(@mymark_save==0){ print(' '); } print('
',$comment,'
 

'); } else{ print('該当する投票データがありません'); } } ##################レース結果作成html################## sub make_result{ print <

レース結果作成フォーム
レース名・レース総評等
END_OF_TEXT my @horse_num=sort{ $a<=>$b }keys %horse_names; foreach(@horse_num){ my $horse_name=$horse_names{$_}; if($torikesi_mark ne '' && $horse_name=~/$torikesi_mark/){ $horse_name=~s/$torikesi_mark//go; }#出走取り消し馬から除外文字を除く print(''); if($torikesi_mark ne '' && $horse_names{$_}=~/$torikesi_mark/){ print ''; } else{ if($doutyaku==0){ print ''; } else{ print ''; } } } print '
馬番馬名着順
',$_,'',$horse_name,''; print($torikesi_mark); print '
'; print ''; my @baken_kind1; my @baken_kind2; my @baken_kind3; if($doutyaku==0){ @baken_kind1=('3連複'); @baken_kind2=('馬連','馬単','枠連','ワイド','ワイド','ワイド'); @baken_kind3=('単勝','複勝','複勝','複勝'); push(@baken_kind1,'3連単') if($rentan==1); }#通常時 else{ @baken_kind1=('3連複','3連複','3連複'); @baken_kind2=('馬連','馬連','馬連','馬単','馬単','馬単','枠連','枠連','枠連','ワイド','ワイド','ワイド','ワイド','ワイド','ワイド'); @baken_kind3=('単勝','単勝','単勝','複勝','複勝','複勝','複勝','複勝','複勝'); push(@baken_kind1,'3連単','3連単','3連単') if($rentan==1); }#同着時 foreach(@baken_kind1){ print (''); print ''; print ''; } foreach(@baken_kind2){ print (''); print ''; print ''; } foreach(@baken_kind3){ print (''); print ''; print ''; } print <
種類勝ち馬投票券払戻額
',$_,''; print '-'; print '-
',$_,''; print '-
',$_,'
注:間違った結果を送信してしまった場合は・・・
管理人コマンドの『バックアップデータロード』を使って
すぐに元のデータに戻し、やり直して下さい。
 

END_OF_TEXT } ####################管理人専用html#################### sub target_list{ my @horse_num=sort{ $a<=>$b }keys %horse_names; my $torikesi_comment="出走取消しの場合は、馬名の横に「$torikesi_mark」と記入して下さい。" if($torikesi_mark ne ''); print <管理人専用コマンド $torikesi_comment  

END_OF_TEXT for($i=1;$i<$max_horse+1;$i++){ print('') ; } print <
予\想レース作成フォーム
レース名・レース総評等
発走日時(締切時刻)
END_OF_TEXT if($timelocal_use==0){ $deadline_time=$now_time if($deadline_time eq ''); my ($sec,$minute,$hour,$day,$month,$year) = localtime($deadline_time); my ($sec2,$minute2,$hour2,$day2,$month2,$year2) = localtime($now_time); $year2+=1900; $month+=1; print ('年'); print ('月'); print ('
'); print ('時'); print ('分'); } else{ $deadline_time=$now_time if($deadline_time eq ''); my ($sec,$minute,$hour,$day,$month,$year) = localtime($deadline_time); $month+=1; $minute=int($minute/5)*5; print ('現在時刻(',$month,'月',$day,'日',$hour,'時',$minute,'分)に
'); print ('プラスマイナスして発走日時を決めて下さい
'); print ('
'); print (''); print (''); } print <
馬番馬名$subcomment
',$i,'
予\想レース作成
レース結果記入
レース結果記入(同着時専用)
バックアップデータロード
会員名簿一覧(修正・退会)
会員登録
軍資金額リセット
カスタマイズする(初心者用)
カスタマイズする(上級者用)
スタイルシートを利用する
色候補を見る
背景イラスト候補を見る
 

END_OF_TEXT } ###################会員名簿一覧html################### sub member_list{ print < 修正or退会させるデータを指定し、修正or退会ボタンを選択してから・・・
送信ボタンを押して下さい
(退会の場合は、一度に複数のデータを指定可能\です)

END_OF_TEXT my @true_ranks=sort{ $member_times{$b}<=>$member_times{$a} }keys %member_times; for($i=0;$i<@true_ranks;$i++){ my $name=$member_names{$true_ranks[$i]}; my $email=$member_mails{$true_ranks[$i]}; my $pass=$member_passs{$true_ranks[$i]}; my $date=$member_times{$true_ranks[$i]}; my ($sec,$min,$hour,$day,$month) = localtime($date); $month = ($month + 1); if($month < 10) { $month = "0$month"; } if($day < 10) { $day = "0$day"; } $date = "$month月$day日"; print( '', '', '', ) ; } print <
会員名簿一覧
指定名前メールアドレスパスワード登録日
', '','',$name,' ',$email,' ',$pass,' ',$date,'
修正退会
 

END_OF_TEXT } ###################会員データ修正html################### sub repair_list{ print < データを書き換えて、送信ボタンを押して下さい

データ修正フォーム
◆名前
◆メールアドレス
◆パスワード
◆軍資金額
 

END_OF_TEXT } ###############新規登録html############### sub regist_list{ print < 名前とメールアドレスを記入して下さい
(半角カナや特殊文字等は、使用しないで下さい)
 

会員登録フォーム
◆名前
◆メールアドレス
 

$error_code

END_OF_TEXT } ###############会員削除html############### sub delete_list{ ($cookie_name,$cookie_pass) = get_cookie(); ($c_cook,$c_name)=split(/:/,$cookie_name); ($c_cook,$c_pass)=split(/:/,$cookie_pass); print < $error_code

 

登録削除フォーム
◆登録名
◆パスワード
END_OF_TEXT } ###############新規登録成功html############### sub regist_success_list{ if($userregist==0){ print <
会員登録ありがとうございます
◆名前$name
◆メールアドレス$email
◆パスワード$new_password
 

上記事項は、重要ですので忘れないようにして下さい。

END_OF_TEXT } elsif($userregist==1){ print <
会員登録しました!!
◆名前$name
◆メールアドレス$email
◆パスワード$new_password
 

会員登録フォーム
◆名前
◆メールアドレス
 

END_OF_TEXT } } ###############新規登録成功html(メール版)############### sub regist_success_list2{ if($userregist==0){ print <
会員登録ありがとうございます
◆名前$name
◆メールアドレス$email
 

パスワードは、上記メールアドレス宛に送付させてもらいましたので・・・
メールボックスを確認してみて下さいませ。
(サーバの調子によっては、数時間要する事もありますので、ご注意下さい)
(また、メールの件名は『$default_subject』となっています)

END_OF_TEXT } elsif($userregist==1){ print <
会員登録しました!!
◆名前$name
◆メールアドレス$email
 

パスワードは、上記メールアドレス宛に送付しました!!

 

会員登録フォーム
◆名前
◆メールアドレス
 

END_OF_TEXT } } ###############新規登録失敗html############### sub regist_success_list3{ print < $error_code

 

END_OF_TEXT } ###############登録削除成功html############### sub delete_success_list{ print <
削除成功
◆登録名$name
◆パスワード$pass
 

END_OF_TEXT } ####################投票OPEN#################### sub vote_open{ unless(-f $vote_file){ open(DATA,">$vote_file");close(DATA); } if(open(DATA,"$vote_file")){ my @line = ; close(DATA); for($i=0;$i<@line;$i++){ chomp($line[$i]); my ($pass,$name,$comment,$last_time,$date_total_money,$mymark,@vote_save) = split(/,/,$line[$i]); my ($date,$total_money) = split(/==/,$date_total_money); my $vote_save=join(',',@vote_save); $vote_names{$pass}=$name; $vote_comments{$pass}=$comment; $vote_times{$pass}=$last_time; $vote_dates{$pass}=$date; $vote_saves{$pass}=$vote_save; $vote_marks{$pass}=$mymark; $vote_total_moneys{$pass}=$total_money; $vote_nums{$pass}=$i; } } else{ $error_code='データファイルへのアクセスに失敗しました!!'; } } ####################投票SAVE#################### sub vote_save{ my $vote_save=join(',',@save);#投票内容 my $mymark_save=join('=',@mymark);#予想内容 my ($sec,$min,$hour,$day,$month,$year,$wday) = localtime($now_time); $month = ($month + 1); if($month < 10) { $month = "0$month"; } if($day < 10) { $day = "0$day"; } if($hour < 10) { $hour = "0$hour"; } if($min < 10) { $min = "0$min"; } my $date; if($date_way==0){ $date = ""; } elsif($date_way==1){ $date = "($month月$day日 $hour時$min分)"; } elsif($date_way==2){ $date = "($month月$day日)"; } elsif($date_way==3){ $date = "$month月$day日$wday[$wday]$hour時$min分"; } elsif($date_way==4){ $date = "$month月$day日$wday[$wday]"; } elsif($date_way==5){ $date = "$month/$day$wday2[$wday]$hour:$min"; } elsif($date_way==6){ $date = "$month/$day$wday2[$wday]"; } my $date_total_money=$date.'=='.$total_money; $comment =~ s/\r\n/
/g; $comment =~ s/\r/
/g; $comment =~ s/\n/
/g; $comment =~ s/\t/ /g; $comment=~ s/

/
 
/g; if($tag==0 && $inlinelink==1){ $comment=~s/(http:\/\/[!#-9A-~]+)/$1<\/a>/g; $comment=~s/([0-9a-z_\.\-]+\@([0-9a-z_\-]+\.)+[0-9a-z_\-]+)/$1<\/a>/ig; } elsif($tag==0 && $inlinelink==2){ $comment=~s/(http:\/\/[!#-9A-~]+)/$inline_word<\/a>/g; $comment=~s/([0-9a-z_\.\-]+\@([0-9a-z_\-]+\.)+[0-9a-z_\-]+)/$inline_word<\/a>/ig; } elsif($tag==0 && $inlinelink==3){ $comment=~s/(http:\/\/[!#-9A-~]+)/$inline_image<\/a>/g; $comment=~s/([0-9a-z_\.\-]+\@([0-9a-z_\-]+\.)+[0-9a-z_\-]+)/$inline_image<\/a>/ig; } unless(-f $vote_file){ open(DATA,">$vote_file");close(DATA); } if(open(DATA,"$vote_file")){ my @line = ; close(DATA); my $check; for($i=0;$i<@line;$i++){ if($line[$i]=~/^$pass,/){ $line[$i]="$pass,$name,$comment,$now_time,$date_total_money,$mymark_save,$vote_save\n"; $check=1; last; } } if($check==0){ push(@line,"$pass,$name,$comment,$now_time,$date_total_money,$mymark_save,$vote_save\n"); } if(open(DATA, ">$vote_file")){ for($i=0;$i<@line;$i++){ print DATA "$line[$i]"; } close(DATA); } } } ####################データ収集#################### sub data_open{ unless(-f $data_file){ open(DATA,">$data_file");close(DATA); } if(open(DATA,"$data_file")){ my @line = ; close(DATA); for($i=0;$i<@line;$i++){ chomp($line[$i]); if($i==0){ $deadline_time=$line[$i]; } elsif($i==1){ $race_comment=$line[$i]; } else{ my ($horse_num,$horse_name,$horse_comment) = split(/,/,$line[$i]); $horse_names{$horse_num}=$horse_name; $horse_comments{$horse_num}=$horse_comment; } } } else{ $error_code='データファイルへのアクセスに失敗しました!!'; } } ####################データセーブ#################### sub data_save{ $race_comment =~ s/\r\n/
/g; $race_comment =~ s/\r/
/g; $race_comment =~ s/\n/
/g; $race_comment =~ s/\t/ /g; $race_comment =~ s/

/
 
/g; if($timelocal_use==1){ if(open(DATA,"$data_file")){ my @line = ; close(DATA); for($i=0;$i<@line;$i++){ chomp($line[$i]); if($i==0){ $deadline_time=$line[$i]; last; } } } $deadline_time=$now_time if($deadline_time eq ''); $deadline_time=int($deadline_time/(60*5))*(60*5); $permit_time=$deadline_time+60*60*24*$p_day+60*60*$p_hour+60*$p_minute; }#発走時刻の計算(@niftyの場合) if(open(DATA,">$data_file")){ print DATA "$permit_time\n"; print DATA "$race_comment\n"; for($i=0;$i<$max_horse;$i++){ next if($horse_name[$i] eq ''); my $num=$i+1; print DATA "$num,$horse_name[$i],$horse_comment[$i]\n"; } close(DATA); } else{ $error_code='データファイルへのアクセスに失敗しました!!'; } } ####################結果データ収集#################### sub result_open{ unless(-f $result_file){ open(DATA,">$result_file");close(DATA); } if(open(DATA,"$result_file")){ my @line = ; close(DATA); for($i=0;$i<@line;$i++){ chomp($line[$i]); if($i==0){ $race_comment=$line[$i]; } elsif($i==1){ $allhorse_num=$line[$i]; } elsif($i==2){ my @before_race=split(/,/,$line[$i]); foreach(@before_race){ my ($horse_num,$horse_name)=split(/=/,$_); $befor_names{$horse_num}=$horse_name; } } elsif($i==3){ @result_vote=split(/,/,$line[$i]); } elsif($i==4){ my @result_rank=split(/,/,$line[$i]); foreach(@result_rank){ my ($horse_num,$horse_result,$horse_name)=split(/=/,$_); $horse_names{$horse_num}=$horse_name; $horse_results{$horse_num}=$horse_result; } } else{ my ($pass,$name,$comment,$addmoney_soneki,$mymark,@vote_save) = split(/,/,$line[$i]); my ($addmoney,$soneki) = split(/==/,$addmoney_soneki); my $vote_save=join(',',@vote_save); $vote_names{$pass}=$name; $vote_comments{$pass}=$comment; $vote_addmoneys{$pass}=$addmoney; $vote_saves{$pass}=$vote_save; $vote_marks{$pass}=$mymark; $vote_sonekis{$pass}=$soneki; } } } else{ $error_code='データファイルへのアクセスに失敗しました!!'; } } ####################結果データセーブ#################### sub result_save{ $race_comment =~ s/\r\n/
/g; $race_comment =~ s/\r/
/g; $race_comment =~ s/\n/
/g; $race_comment =~ s/\t/ /g; $race_comment =~ s/

/
 
/g; my $allhorse_num=@horse_name;#参加頭数 my $rentan_plus;#勝ち馬投票券に3連単を加える場合の変数 for($i=0;$i<@vote_num1;$i++){ next if($vote_num1[$i] eq ''); $vote_money[$i]=~s/$yen//go; $vote_money[$i]=~s/0/0/go; $vote_money[$i]=~s/1/1/go; $vote_money[$i]=~s/2/2/go; $vote_money[$i]=~s/3/3/go; $vote_money[$i]=~s/4/4/go; $vote_money[$i]=~s/5/5/go; $vote_money[$i]=~s/6/6/go; $vote_money[$i]=~s/7/7/go; $vote_money[$i]=~s/8/8/go; $vote_money[$i]=~s/9/9/go; if($doutyaku==0){ $rentan_plus=1 if($rentan==1); if($i==0){ push(@win,"0::$vote_num1[$i]::$vote_num2[$i]::$vote_num3[$i]::$vote_money[$i]"); }#3連複 elsif($i==1 && $rentan==1){ push(@win,"7::$vote_num1[$i]::$vote_num2[$i]::$vote_num3[$i]::$vote_money[$i]"); }#3連単 elsif($i==1+$rentan_plus){ push(@win,"1::$vote_num1[$i]::$vote_num2[$i]::0::$vote_money[$i]"); }#馬連 elsif($i==2+$rentan_plus){ push(@win,"2::$vote_num1[$i]::$vote_num2[$i]::0::$vote_money[$i]"); }#馬単 elsif($i==3+$rentan_plus){ push(@win,"3::$vote_num1[$i]::$vote_num2[$i]::0::$vote_money[$i]"); }#枠連 elsif($i>=4+$rentan_plus && $i<=6+$rentan_plus){ push(@win,"4::$vote_num1[$i]::$vote_num2[$i]::0::$vote_money[$i]"); }#ワイド elsif($i==7+$rentan_plus){ push(@win,"5::$vote_num1[$i]::0::0::$vote_money[$i]"); }#単勝 elsif($i>=8+$rentan_plus && $i<=10+$rentan_plus){ push(@win,"6::$vote_num1[$i]::0::0::$vote_money[$i]"); }#複勝 }#通常時 else{ $rentan_plus=3 if($rentan==1); if($i>=0 && $i<3){ push(@win,"0::$vote_num1[$i]::$vote_num2[$i]::$vote_num3[$i]::$vote_money[$i]"); }#3連複 elsif($i>=3 && $i<6 && $rentan==1){ push(@win,"7::$vote_num1[$i]::$vote_num2[$i]::$vote_num3[$i]::$vote_money[$i]"); }#3連単 elsif($i>=3+$rentan_plus && $i<6+$rentan_plus){ push(@win,"1::$vote_num1[$i]::$vote_num2[$i]::0::$vote_money[$i]"); }#馬連 elsif($i>=6+$rentan_plus && $i<9+$rentan_plus){ push(@win,"2::$vote_num1[$i]::$vote_num2[$i]::0::$vote_money[$i]"); }#馬単 elsif($i>=9+$rentan_plus && $i<12+$rentan_plus){ push(@win,"3::$vote_num1[$i]::$vote_num2[$i]::0::$vote_money[$i]"); }#枠連 elsif($i>=12+$rentan_plus && $i<18+$rentan_plus){ push(@win,"4::$vote_num1[$i]::$vote_num2[$i]::0::$vote_money[$i]"); }#ワイド elsif($i>=18+$rentan_plus && $i<21+$rentan_plus){ push(@win,"5::$vote_num1[$i]::0::0::$vote_money[$i]"); }#単勝 elsif($i>=21+$rentan_plus && $i<27+$rentan_plus){ push(@win,"6::$vote_num1[$i]::0::0::$vote_money[$i]"); }#複勝 }#同着時 } for($i=0;$i<@vote_kind;$i++){ if($doutyaku==1){ $vote_kind[$i]=~s/0/0/go; $vote_kind[$i]=~s/1/1/go; $vote_kind[$i]=~s/2/2/go; $vote_kind[$i]=~s/3/3/go; $vote_kind[$i]=~s/4/4/go; $vote_kind[$i]=~s/5/5/go; $vote_kind[$i]=~s/6/6/go; $vote_kind[$i]=~s/7/7/go; $vote_kind[$i]=~s/8/8/go; $vote_kind[$i]=~s/9/9/go; } if($vote_kind[$i]==100){ my $num=$i+1; push(@modosi_num,$num); } }#除外馬の番号 if(@modosi_num>0){ my @true_num=&hat_color_num($allhorse_num); foreach(@true_num){ $double_nums{$_}++; } foreach(@modosi_num){ $double_nums{$_}--; } foreach(@modosi_num){ if($double_nums{$_}==0){ push(@modosi_baken,"3::${_}::0::0::100"); } elsif($double_nums{$_}==1){ push(@modosi_baken,"3::${_}::${_}::0::100"); } push(@modosi_baken,"0::${_}::0::0::100"); push(@modosi_baken,"1::${_}::0::0::100"); push(@modosi_baken,"2::${_}::0::0::100"); push(@modosi_baken,"4::${_}::0::0::100"); push(@modosi_baken,"5::${_}::0::0::100"); push(@modosi_baken,"6::${_}::0::0::100"); push(@modosi_baken,"7::${_}::0::0::100"); } }#除外馬のある場合の処理 &vote_open; my @keys=keys %vote_saves; foreach(@keys){ my @check_vote=split(/,/,$vote_saves{$_}); for($i=0;$i<@check_vote;$i++){ my @vote=split(/::/,$check_vote[$i]); for($j=0;$j<@win;$j++){ my @win_vote=split(/::/,$win[$j]); if($vote[0] eq $win_vote[0]){ if($vote[0] eq '0'){ if($vote[1] > 90 && $vote[2] > 90 && $vote[3] > 90){ $add_moneys{$_}+=$vote[4]*$win_vote[4]/100; last; } elsif($vote[2] > 90 && $vote[3] > 90){ if($vote[1] eq $win_vote[1] || $vote[1] eq $win_vote[2] || $vote[1] eq $win_vote[3]){ $add_moneys{$_}+=$vote[4]*$win_vote[4]/100; last; } } elsif($vote[3] > 90){ if($vote[1] eq $win_vote[1] && $vote[2] eq $win_vote[2]){ $add_moneys{$_}+=$vote[4]*$win_vote[4]/100; last; } elsif($vote[1] eq $win_vote[1] && $vote[2] eq $win_vote[3]){ $add_moneys{$_}+=$vote[4]*$win_vote[4]/100; last; } elsif($vote[1] eq $win_vote[2] && $vote[2] eq $win_vote[3]){ $add_moneys{$_}+=$vote[4]*$win_vote[4]/100; last; } } }#3連複で全流しがある場合専用 elsif($vote[0] eq '1' || $vote[0] eq '3' || $vote[0] eq '4'){ if($vote[1] > 90 && $vote[2] > 90){ $add_moneys{$_}+=$vote[4]*$win_vote[4]/100; last; } elsif($vote[2] > 90){ if($vote[1] eq $win_vote[1] || $vote[1] eq $win_vote[2]){ $add_moneys{$_}+=$vote[4]*$win_vote[4]/100; last; } } }#馬番・枠連・ワイドで全流しがある場合専用 if($vote[1] eq $win_vote[1] && $vote[2] eq $win_vote[2] && $vote[3] eq $win_vote[3]){ $add_moneys{$_}+=$vote[4]*$win_vote[4]/100; last; }#通常 elsif($vote[1] > 90 && $vote[2] eq $win_vote[2] && $vote[3] eq $win_vote[3]){ $add_moneys{$_}+=$vote[4]*$win_vote[4]/100; last; }#全流しがある場合↓ elsif($vote[1] eq $win_vote[1] && $vote[2] > 90 && $vote[3] eq $win_vote[3]){ $add_moneys{$_}+=$vote[4]*$win_vote[4]/100; last; } elsif($vote[1] eq $win_vote[1] && $vote[2] eq $win_vote[2] && $vote[3] > 90){ $add_moneys{$_}+=$vote[4]*$win_vote[4]/100; last; } elsif($vote[1] > 90 && $vote[2] > 90 && $vote[3] eq $win_vote[3]){ $add_moneys{$_}+=$vote[4]*$win_vote[4]/100; last; } elsif($vote[1] > 90 && $vote[2] eq $win_vote[2] && $vote[3] > 90){ $add_moneys{$_}+=$vote[4]*$win_vote[4]/100; last; } elsif($vote[1] eq $win_vote[1] && $vote[2] > 90 && $vote[3] > 90){ $add_moneys{$_}+=$vote[4]*$win_vote[4]/100; last; } elsif($vote[1] > 90 && $vote[2] > 90 && $vote[3] > 90){ $add_moneys{$_}+=$vote[4]*$win_vote[4]/100; last; } } } } } #3連複、返還計算:(($allhorse_num-2)+1)*(($allhorse_num-2)/2) #3連単、返還計算:(($allhorse_num-2)+1)*(($allhorse_num-2)/2)*2 my $allwaku_num;#総枠数 if(@modosi_baken>0){ foreach(@keys){ my @check_vote=split(/,/,$vote_saves{$_}); for($i=0;$i<@check_vote;$i++){ my @vote=split(/::/,$check_vote[$i]); for($j=0;$j<@modosi_baken;$j++){ my @modosi_vote=split(/::/,$modosi_baken[$j]); if($vote[0] eq '3' && $modosi_vote[0] eq '3'){ if($modosi_vote[2] ne ''){ if($vote[1] eq $modosi_vote[1] && $vote[2] eq $modosi_vote[2]){ $add_moneys{$_}+=$vote[4]; last; } elsif($vote[1]>90 && $vote[2]>90){ $add_moneys{$_}+=$vote[4]; last; } elsif($vote[1]>90 && $vote[2] eq $modosi_vote[2]){ $add_moneys{$_}+=$vote[4]; last; } elsif($vote[1] eq $modosi_vote[1] && $vote[2]>90){ $add_moneys{$_}+=$vote[4]; last; } }#3-3等のゾロ目のみ払い戻し else{ if($vote[1]>90 && $vote[2]>90){ $allwaku_num=$allhorse_num if($allhorse_num<=8); $allwaku_num=8 if($allhorse_num>8); if($double_nums{$modosi_vote[1]}==0){ $allwaku_num--; } $add_moneys{$_}+=$vote[4]*$allwaku_num; last; } elsif($vote[1] eq $modosi_vote[1] && $vote[2]>90){ $allwaku_num=$allhorse_num if($allhorse_num<=8); $allwaku_num=8 if($allhorse_num>8); if($double_nums{$modosi_vote[1]}==0){ $allwaku_num--; } $add_moneys{$_}+=$vote[4]*$allwaku_num; last; } elsif($vote[1]>90 || $vote[2]>90){ $add_moneys{$_}+=$vote[4]; last; } elsif($vote[1] eq $modosi_vote[1] || $vote[2] eq $modosi_vote[1]){ $add_moneys{$_}+=$vote[4]; last; } } } elsif($vote[0] eq '0' || $vote[0] eq '7'){ if($vote[0] eq '0' && $modosi_vote[0] eq '0'){ } elsif($vote[0] eq '7' && $modosi_vote[0] eq '7'){ } else{ next; } if($vote[1]<90 && $vote[2]<90 && $vote[3]<90){ if($vote[1] eq $modosi_vote[1] || $vote[2] eq $modosi_vote[1] || $vote[3] eq $modosi_vote[1]){ $add_moneys{$_}+=$vote[4]; last; } }#全流しがない場合↓ elsif($vote[1]>90 && $vote[2]<90 && $vote[3]<90){ if($vote[2] eq $modosi_vote[1] || $vote[3] eq $modosi_vote[1]){ $add_moneys{$_}+=$vote[4]*($allhorse_num-2); last; } else{ $add_moneys{$_}+=$vote[4]; last; } }#全流しが1つの場合↓ elsif($vote[1]<90 && $vote[2]>90 && $vote[3]<90){ if($vote[1] eq $modosi_vote[1] || $vote[3] eq $modosi_vote[1]){ $add_moneys{$_}+=$vote[4]*($allhorse_num-2); last; } else{ $add_moneys{$_}+=$vote[4]; last; } }#全流しが1つの場合↓ elsif($vote[1]<90 && $vote[2]<90 && $vote[3]>90){ if($vote[1] eq $modosi_vote[1] || $vote[2] eq $modosi_vote[1]){ $add_moneys{$_}+=$vote[4]*($allhorse_num-2); last; } else{ $add_moneys{$_}+=$vote[4]; last; } }#全流しが1つの場合↓ elsif($vote[1]>90 && $vote[2]>90 && $vote[3]<90){ if($vote[3] eq $modosi_vote[1]){ if($vote[0] eq '0'){ $add_moneys{$_}+=$vote[4]*(($allhorse_num-2)+1)*(($allhorse_num-2)/2); } elsif($vote[0] eq '7'){ $add_moneys{$_}+=$vote[4]*(($allhorse_num-2)+1)*(($allhorse_num-2)/2)*2; } last; } else{ if($vote[0] eq '0'){ $add_moneys{$_}+=$vote[4]*($allhorse_num-2); } elsif($vote[0] eq '7'){ $add_moneys{$_}+=$vote[4]*($allhorse_num-2)*2; } last; } }#全流しが2つの場合 elsif($vote[1]>90 && $vote[2]<90 && $vote[3]>90){ if($vote[2] eq $modosi_vote[1]){ if($vote[0] eq '0'){ $add_moneys{$_}+=$vote[4]*(($allhorse_num-2)+1)*(($allhorse_num-2)/2); } elsif($vote[0] eq '7'){ $add_moneys{$_}+=$vote[4]*(($allhorse_num-2)+1)*(($allhorse_num-2)/2)*2; } last; } else{ if($vote[0] eq '0'){ $add_moneys{$_}+=$vote[4]*($allhorse_num-2); } elsif($vote[0] eq '7'){ $add_moneys{$_}+=$vote[4]*($allhorse_num-2)*2; } last; } }#全流しが2つの場合 elsif($vote[1]<90 && $vote[2]>90 && $vote[3]>90){ if($vote[1] eq $modosi_vote[1]){ if($vote[0] eq '0'){ $add_moneys{$_}+=$vote[4]*(($allhorse_num-2)+1)*(($allhorse_num-2)/2); } elsif($vote[0] eq '7'){ $add_moneys{$_}+=$vote[4]*(($allhorse_num-2)+1)*(($allhorse_num-2)/2)*2; } last; } else{ if($vote[0] eq '0'){ $add_moneys{$_}+=$vote[4]*($allhorse_num-2); } elsif($vote[0] eq '7'){ $add_moneys{$_}+=$vote[4]*($allhorse_num-2)*2; } last; } }#全流しが2つの場合 elsif($vote[1]>90 && $vote[2]>90 && $vote[3]>90){ if($vote[0] eq '0'){ $add_moneys{$_}+=$vote[4]*(($allhorse_num-2)+1)*(($allhorse_num-2)/2); } elsif($vote[0] eq '7'){ $add_moneys{$_}+=$vote[4]*(($allhorse_num-2)+1)*(($allhorse_num-2)/2)*2; } last; }#全流しが3つの場合 }#3連複&3連単 elsif($vote[0] eq $modosi_vote[0]){ if($vote[1]<90 && $vote[2]<90){ if($vote[1] eq $modosi_vote[1] || $vote[2] eq $modosi_vote[1]){ $add_moneys{$_}+=$vote[4]; last; } }#全流しがない場合↓ elsif($vote[1]>90 && $vote[2]<90){ if($vote[2] eq $modosi_vote[1]){ $add_moneys{$_}+=$vote[4]*($allhorse_num-1); last; } else{ $add_moneys{$_}+=$vote[4]; last; } }#全流しが1つの場合↓ elsif($vote[1]<90 && $vote[2]>90){ if($vote[1] eq $modosi_vote[1]){ $add_moneys{$_}+=$vote[4]*($allhorse_num-1); last; } else{ $add_moneys{$_}+=$vote[4]; last; } }#全流しが1つの場合↓ elsif($vote[1]>90 && $vote[2]>90){ if($vote[0] eq '2'){ $add_moneys{$_}+=$vote[4]*($allhorse_num-1)*2; last; }#馬単 else{ $add_moneys{$_}+=$vote[4]*($allhorse_num-1); last; } }#全流しが2つの場合↓ }#単・複・馬番・馬単 } } } }#除外馬のある場合の処理 foreach(@keys){ my $pool_money; my $week_pool_money; if($week_money>0){ $pool_money=$week_money-$vote_total_moneys{$_}; if($pool==1){ if($pool_money<=0){ $week_pool_money=$week_money; }#残りがない場合 else{ $week_pool_money=$pool_money+$vote_total_moneys{$_}; }#残りがある場合 }#小遣いの残りを加算する else{ if($pool_money<=0){ $week_pool_money=$week_money; }#残りがない場合 else{ $week_pool_money=$vote_total_moneys{$_}; print"1"; }#残りがある場合 }#小遣いの残りを加算しない }#レース毎に小遣いが配布される場合 $soneki_moneys{$_}=$week_pool_money+$add_moneys{$_}-$vote_total_moneys{$_}; } &money_save; my @win_rank; for($i=0;$i<@vote_kind;$i++){ next if($vote_kind[$i] eq ''); my $num=$i+1; push(@win_rank,"$num=$vote_kind[$i]=$horse_name[$i]"); } my @before_horse; foreach(sort{ $a<=>$b }keys %horse_names){ push(@before_horse,"$_=$horse_names{$_}"); } my $before_horse=join(',',@before_horse); my $win_rank=join(',',@win_rank); my $win_save=join(',',@win); unless(-f $result_file){ open(DATA,">$result_file");close(DATA); } if(open(DATA,">$result_file")){ print DATA "$race_comment\n"; print DATA "$allhorse_num\n"; print DATA "$before_horse\n"; print DATA "$win_save\n"; print DATA "$win_rank\n"; my @bingo_rank=sort{ $add_moneys{$b}<=>$add_moneys{$a} } @keys; foreach(@bingo_rank){ my $add_money_soneki_money=$add_moneys{$_}.'=='.$soneki_moneys{$_}; print DATA "$_,$vote_names{$_},$vote_comments{$_},$add_money_soneki_money,$vote_marks{$_},$vote_saves{$_}\n"; } close(DATA); } else{ $error_code='データファイルへのアクセスに失敗しました!!'; } } ####################データ収集#################### sub member_open{ unless(-f $member_file){ srand; if($code_select==1){ foreach(0..9){ push(@member_codeword,$_); } } elsif($code_select==2){ foreach(a..z){ push(@member_codeword,$_); } } elsif($code_select==3){ foreach(A..Z){ push(@member_codeword,$_); } } else{ foreach(a..z,0..9){ push(@member_codeword,$_); } } for($i=0;$i<@member_codeword;$i++){ my $n=int(rand @member_codeword); ($member_codeword[$i],$member_codeword[$n])=($member_codeword[$n],$member_codeword[$i]); } my $member_codeword=join('',@member_codeword); open(DATA,">$member_file"); print DATA "$member_codeword\n"; close(DATA); $new_number=$first_number; } elsif(open(DATA,"$member_file")){ my @line = ; close(DATA); $new_number=$first_number; for($i=0;$i<@line;$i++){ chomp($line[$i]); if($i==0 && $command eq 'member_regist2'){ (@member_codeword) = split(//,$line[$i]); } elsif($i>0){ my ($number,$pass,$name,$email,$last_time,$money) = split(/,/,$line[$i]); $member_names{$pass}=$name; $member_passs{$pass}=$pass; $member_mails{$pass}=$email; $member_times{$pass}=$last_time; $member_moneys{$pass}=$money; $new_number=$number if($new_number<=$number); } $new_number+=int(rand $rand_number)+1; } } else{ $error_code='アクセスエラーです。お手数ですが、リロードをして下さいませ。'; } } ##################新規会員データセーブ################## sub member_save{ my $temp_number=$new_number; if(@member_codeword>1){ while(1){ $new_password.=$member_codeword[$temp_number%@member_codeword]; $temp_number =int($temp_number/@member_codeword); last unless($temp_number>0); } } if(open(DATA, ">>$member_file")){ print DATA "$new_number,$new_password,$name,$email,$now_time,$regist_money\n"; close(DATA); } else{ $error_code='アクセスエラーです。お手数ですが、リロードをして下さいませ。'; } } ##################軍資金額リセット################## sub ranking_reset{ if(open(DATA,"$member_file")){ my @line = ; close(DATA); if(open(DATA,">$member_file")){ for($i=0;$i<@line;$i++){ chomp($line[$i]); if($i>0){ my ($number,$pass,$name,$email,$last_time,$money) = split(/,/,$line[$i]); $money=0; $line[$i]="$number,$pass,$name,$email,$last_time,$money"; } print DATA"$line[$i]\n"; } close(DATA); } } } ####################払戻金追加#################### sub money_save{ if(open(DATA,"$member_file")){ my @line = ; close(DATA); if(open(DATA,">$member_file")){ for($i=0;$i<@line;$i++){ chomp($line[$i]); if($i>0){ my ($number,$pass,$name,$email,$last_time,$money) = split(/,/,$line[$i]); $money+=$soneki_moneys{$pass}; $line[$i]="$number,$pass,$name,$email,$last_time,$money"; } print DATA"$line[$i]\n"; } } } else{ $error_code='アクセスエラーです。お手数ですが、リロードをして下さいませ。'; } } ####################会員データ修正#################### sub member_repair{ if(open(DATA,"$member_file")){ my @line = ; close(DATA); if(open(DATA, ">$member_file")){ for($i=0;$i<@line;$i++){ my ($number,$temp_pass,$temp_name,$temp_email,$last_time,$temp_money) = split(/,/,$line[$i]); if($temp_pass eq $pass){ $line[$i]="$number,$repair_pass,$name,$email,$last_time,$my_money\n"; } print DATA "$line[$i]"; } close(DATA); } } } ####################会員データ消去#################### sub member_delete{ my (@target)=@_; if(open(DATA,"$member_file")){ my @line = ; close(DATA); if(open(DATA, ">$member_file")){ for($i=0;$i<@line;$i++){ my $delete_check=0; foreach(@target){ if($line[$i]=~/\Q,$_,$member_names{$_},\E/){ delete $member_times{$_}; $delete_check=1; last; } } if($delete_check==0){ print DATA "$line[$i]"; } } close(DATA); } } } ###################バックアップSAVE################### sub backup_save{ my($file)=@_; if(open(DATA,"$file")){ my @line = ; close(DATA); my $backupfile=$file; $backupfile=~s/.cgi/back.cgi/; if(@line>0 && open(DATA,">$backupfile")){ for($i=0;$i<@line;$i++){ print DATA"$line[$i]"; } } } else{ $error_code='アクセスエラーです。'; } } ###################バックアップLOAD################### sub backup_load{ my($file)=@_; my $backupfile=$file; $backupfile=~s/.cgi/back.cgi/; if(open(DATA,"$backupfile")){ my @line = ; close(DATA); if(@line>0 && open(DATA,">$file")){ for($i=0;$i<@line;$i++){ print DATA"$line[$i]"; } } } else{ $error_code='アクセスエラーです。'; } } ####################ヘッダー部分#################### sub html_header{ my ($title,$name,$pass) = @_; my $header=''; $header.="HTTP/1.0 200 OK\n" if($ENV{'PERLXS'} eq 'PerlIS'); $header.="Content-type: text/html; charset=Shift_JIS\n"; $header.= &set_cookie($name,$pass) if($name ne '' && $pass ne ''); $header.="\n"; $header.=''."\n"; $header.=''."\n"; $header.=''."\n"; $header.= &html_style(); $header.="${title}"."\n"; $header.=''."\n"; $header.=' $hooter

[PR]動画
END_OF_TEXT return $menustr; } ####################クッキー取得#################### sub get_cookie{ my ($name,$pass); if(defined $ENV{'HTTP_COOKIE'}){ my $cook=$ENV{'HTTP_COOKIE'}; (@cook) = split(/;/,$cook); foreach(@cook){ if($_=~/$C_NAME/){ my ($cookie_name,$value) = split(/=/,$_); ($name,$pass) = split(/,/,$value); return ($name,$pass); } } } } ####################クッキーセット#################### sub set_cookie{ my ($name,$pass) = @_; return "Set-Cookie: ${C_NAME}=name:${name},pass:${pass}; ${expires}\n\n"; } ###############クッキーの有効期限を取得############### sub expires { my($day) = @_; my(@date); my(@week) = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'); my(@month) = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'); @date = gmtime($now_time+ $day * 60 * 60 * 24); $date[5] = $date[5] + 1900; foreach (0..3) { $date[$_] = sprintf("%.2d",$date[$_]); } return "$week[$date[6]], $date[3]-$month[$date[4]]-$date[5] $date[2]:$date[1]:$date[0] GMT"; } ####################排他制御開始#################### # $id = LockOn(filename); sub LockOn{ my ($filename)=@_; # 古いディレクトリを削除 rmdir($filename) if(-d $filename && ($now_time-(stat($filename))[9])>$expire); # 排他制御用ディレクトリ生成 my $retry; for($retry=$num_retry; $retry>0 && mkdir($filename,0755)!=1; $retry--){ sleep($retry_time); } return $filename if($retry>0); # 成功 return undef; # 失敗 } ####################排他制御終了#################### # LockOff($id); sub LockOff{ my ($filename)=@_; rmdir ($filename) if(defined $filename); } ####################排他制御失敗#################### sub lock_error{ my $body = <しばらくお待ち下さい  

只今、込み合ってるようです。
しばらくしてから、リロード(再読み込み)してみて下さい

リロードしても繋がらない場合は・・・
3分間ほど待ってから、もう一度トライしてみて下さい。

注:新規設置の管理人様へ・・・
新規設置時に、このコメントばかり表示される時は・・・
DATAのパーミッションが777(707の場合もあり)以外になっていないか・・・
DATAが、Dataやdataになっていないかを確認してみて下さいませ≦(._.)≧
(詳しくは、HPサービスのFAQを参照して下さい)
 

END_OF_BODY return $body; } ####################登録メール送信#################### sub mailsend{ my $mail_comment=<$b } @true_num; } elsif($hat==2){ @true_num=@hat_num; for($i=0;$i<8;$i++){ push(@true_num,$hat_num[-1-$i]); } for($i=0;$i<$hat2;$i++){ push(@true_num,$hat_num[-1-$i]); } @true_num=sort{ $a<=>$b } @true_num; } return(@true_num); } ####################スタイルシートhtml#################### sub style_list{ my $style; if(open(DATA,"$style_file")){ my @line = ; close(DATA); for($i=0;$i<@line;$i++){ $style.=$line[$i]; } } print <スタイルシートを利用する

 

END_OF_TEXT } ####################スタイルシート部分#################### sub html_style{ my $style; unless(-f $style_file){ open(DATA,">$style_file"); $style.="\n"; print DATA "$style"; close(DATA); } elsif(open(DATA,"$style_file")){ my @line = ; close(DATA); for($i=0;$i<@line;$i++){ $style.=$line[$i]; } } return($style); } ####################スタイルシートをセーブする#################### sub style_save{ my ($style)=@_; $style=~ s/\r\n/
/g; $style=~ s/\r/
/g; $style=~ s/\n/
/g; $style=~ s/\t/ /g; $style=~s/
/\n/g;#改行コードを変換 if(open(DATA,">$style_file")){ print DATA "$style"; close(DATA); } }