#!/usr/bin/perl
#	↑サーバーの「perl」のパスを指定。
#	駄目なら｢#!/usr/local/bin/perl5｣
#	それでも駄目ならサーバー管理者に問い合わせて下さい。

###########################################################################
##----------------- まが CGI(アドレス追加・削除) v2.03 --------------------
##  (C)Copyright 2001 by Chama.ne.jp
##   E-mail:master@chama.ne.jp
##   HP:http://www.chama.ne.jp
###########################################################################
# 免責事項、バージョン情報などはkanri.cgiを参照
#下記コマンドが有効です。POST,GETとも使用可能（下記のようなURLでの購読開始も可能）
#	URL・・・indexcgi?in_mail=E-mailアドレス&in_name=お名前&in_start=1&kanrimail=no&returnmail=no
# in_mail=E-mailアドレス
# in_name=お名前
# in_start=1or2	1:購読開始　2:購読解除
# kanrimail=no	管理者へのメール配信なし
# returnmail=no	お客様へのメール配信なし 
#---------- ↓初期設定項目 -----------------------------------------------#
$cgi = 'index2.cgi';
$k_file = 'def/kihon.dat';
$cgi_file = 'def/cgi.dat';
$f_file = 'def/mail.dat';
$key_file = 'def/key.dat';
$welcomemail_file = 'def/welcome.dat'; 
$ka_file2 = 'def/goodbye.dat';
$exitini_file = 'def/exitini.dat';	#購読開始・携帯
$exitouti_file = 'def/exitouti.dat';	#購読解除・携帯
$m_file = 'def/member.csv';
$member_file = 'def/member.dat';
$toumeiimg = 'img/toumei.gif';
#----------↑設定終了↓以下は修正しない。---------------------------------
require './jcode.pl';
$ENV{'TZ'} = "JST-9";
$usrip = $ENV{'REMOTE_ADDR'};
&decode;
&o_lock;
&k_open;
if($kerrmail){
	$errmail = $kerrmail;
}else{
	$errmail = $mail;
}
$sendmail .= " -t -f $errmail";
&cgi_open;
&f_open;
&key_open;
&member_open;
$dfile = 'def/ihtmltop.dat';
open TIN,"$dfile";
while(<TIN>){
	$htmltop .= $_;
}
close TIN;
$dfile = 'def/ihtmllast.dat';
open LIN,"$dfile";
while(<LIN>){
	$htmllast .= $_;
}
close LIN;
if($in_start == 1){
	if($kconfirmon == 2){
		&toconfirm;
	}
	if($kmensekion < 1 && $in{'mensekion'} == 1){
		$msg .= "免責事項の同意が必要です。<BR>\n";
	}
	if($mok[0] == 2){
		if(!$in{'mm'} or !$in{'dd'}){
			$msg .= "$mname[0]が未入力です。<BR>\n";
		}
	}
	$pm_cnt = 1;
	while(5 >= $pm_cnt){
		if($mok[$pm_cnt] == 2){
			$dataname = 'data'.$pm_cnt;
			unless($in{$dataname}){
				$msg .= "$mname[$pm_cnt]が未入力です。<BR>\n";
			}
		}
		$pm_cnt++;
	}
	while($mem_cnt > $pm_cnt){
		if($mok[$pm_cnt] == 2){
			$dataname = 'memdata'.$pm_cnt;
			if($in{"memcbox$pm_cnt"} > 0){
				$cb_cnt = 0;
				while($in{"memcbox$pm_cnt"} > $cb_cnt){
					$dataname2 = 'memdata'.$pm_cnt.'br'.$cb_cnt;
					if($in{$dataname2}){
						$in{$dataname} .= "<BR>" if($in{$dataname});
						$in{$dataname} .= $in{$dataname2};
					}
					$cb_cnt++;
				}
			}
			unless($in{$dataname}){
				$msg .= "$mname[$pm_cnt]が未入力です。<BR>\n";
			}
		}
		$pm_cnt++;
	}
	&check;
	if($kinmailtemp == 1){
		$wf_cnt = 1;
		$wf_flag = 0;
		while(9 >= $wf_cnt){
			$inflagname = 'flag'.$wf_cnt;
			if($in{$inflagname} && $wf_flag < 1){
				$welcomemail_file = 'def/welcome'.$wf_cnt.'.dat';
				$wf_flag = 1;
			}
			$wf_cnt++;
		}
	}
	$subject = $subject_in;
	$ka_file = $welcomemail_file;
	&mail_to;
	@freedatas = ();
	$frd_cnt = 6;
	while($mem_cnt > $frd_cnt){
		$indataname = 'memdata'.$frd_cnt;
		push @freedatas,$in{$indataname};
		$frd_cnt++;
	}
	$addfrdata = join(',',@freedatas);
	if($f_flag == 1){
		if($kinflag == 1){
			&write_flagplus;
		}else{
			&write_flagchange;
		}
	}else{
		&write;
	}
	$logfile = 'def/start.log';
	$time = time;
	($sec,$min,$hou,$mda,$mon,$yea,$wda,$yda,$isd) = localtime($time);
	$now .= sprintf("%02d年%02d月%02d日%02d:%02d:%02d",$yea + 1900,$mon + 1,$mda,$hou,$min,$sec);
	$logmaxtime = $time - $klogmaxday * 24 * 60 * 60;
	open LOGIN,"$logfile";
	while(<LOGIN>){
		$_ =~ s/[\r\n\t\f]//g;
		($logtime,$logdate,$logip,$logmail,$logmode) = split(/\,/,$_);
		if($logtime > $logmaxtime){
			@logs = (@logs,$_);
		}
	}
	close LOGIN;

	open LOGOUT,">$logfile";
	foreach $_(@logs){
		print LOGOUT $_,"\n";
	}
	print LOGOUT $time,',',$now,',',$usrip,',',$in_mail,',',$in{'mode'};
	close LOGOUT;
	&connectin;
	&exitin_open;
	&c_lock;
	if($in{'pmod'} eq 'i'){
		&ikanryou;
	}
	&kanryou;
}elsif($in_start == 2){
	&check;
	unless($in_name){
			$in_name = $del_name;
	}
	$subject = $subject_out;
	$ka_file = $ka_file2;
	&mail_to;
	if($koutflag == 1){
		&s_writeflagout;
	}elsif($in_mail =~ /\+/){
		&s_write2;
	}else{
		&s_write;
	}
	&exitout_open;
	&c_lock;
	if($in{'pmod'} eq 'i'){
		&ikanryou;
	}
	&kanryou;
}
if($in{'mempost1'}){
	($in{'ken'},$in{'memadd1'}) = &postcityopen($in{'mempost1'},$in{'mempost2'});
}
&c_lock;
&prev;
#デコード処理-------------------------------------------------------------
sub decode{
	if ($ENV{'REQUEST_METHOD'} eq "POST") {
		read(STDIN, $buff, $ENV{'CONTENT_LENGTH'});
	} else {
		$buff = $ENV{'QUERY_STRING'};
	}
	@pairs = split(/&/,$buff);
	foreach $pair (@pairs) {
		($name, $value) = split(/=/, $pair);
		$value =~ tr/+/ /;
		$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
		&jcode::h2z_sjis(\$value);
		#&jcode'convert(*value,'sjis');
		#タグを無効に
		$value =~ s/&/&amp;/g;
		$value =~ s/"/&quot;/g;
		$value =~ s/</&lt;/g;
		$value =~ s/>/&gt;/g;
		$value =~ s/\,//g;
		$value =~ s/[ \r\t\f]//g;
		$value =~ s/\n/<br>/g;
		$in{$name} = $value;
		push @allname,$name;
	}
	if($in{'mail'}){
		$in_mail = $in{'mail'};
	}else{
		$in_mail = $in{'in_mail'};
	}
	if($in{'name'}){
		$in_name = $in{'name'};
	}else{
		$in_name = $in{'in_name'};
	}
	if($in{'start'}){
		$in_start = $in{'start'};
	}else{
		$in_start = $in{'in_start'};
	}
	$in{'memtel'} = &metachange($in{'memtel'});
	$in{'memktel'} = &metachange($in{'memktel'});
	$in{'memfax'} = &metachange($in{'memfax'});
}
sub metachange{
	local $metain = $_[0];
	local $metamoji = '−';
	$metamoji =~ s/\x5b/\\x5b/g;
	$metain =~ s/０/0/g;
	$metain =~ s/１/1/g;
	$metain =~ s/２/2/g;
	$metain =~ s/３/3/g;
	$metain =~ s/４/4/g;
	$metain =~ s/５/5/g;
	$metain =~ s/６/6/g;
	$metain =~ s/７/7/g;
	$metain =~ s/８/8/g;
	$metain =~ s/９/9/g;
	$metain =~ s/\Q$metamoji\E/\-/g;
	return($metain);
}
#基本ファイルのOPEN------------------------------------------------------
sub k_open{
	open KF,"$k_file" or die "$k_file オープン失敗";
	while (<KF>){
		$_ =~s/[\r\n\t\f]//g;
		($mail,$url,$logo,$title,$title_size,$title_color,$word_size,$word_color,$table_color,$td_color,$data,$bg_file,$pass,$sendmail,$pc_prevmax,$i_prevmax,$track_color,
			$face_color,$shadow_color,$darkshadow_color,$hightlight_color,$dlight_color,$arrow_color,$subject_form,$subject_in,$subject_out,
			$mail_on,$title_on,$i_url,$i_logo,$i_bg_file,$kanriname,$flagname1,$flagname2,$flagname3,$flagname4,$flagname5,
			$flagname6,$flagname7,$flagname8,$flagname9,$html_mail,$maillist1,$maillist2,$mail_name,$backdefprev,$bgcolor,$ibgcolor,
			$kinflag,$koutflag,$kanriurl,$subject_change,$kwordmax,$kwordmax2,$kreservemax,$kerrmail,$kurlmax,$mail_ok,$kconfirmon,$konemailmax,
			$kbmailon,$kbmailcntmax,$kbmailtimemin,$kmensekion,$klogmaxday,$kloadon,$kyoyakuon,$kmemberdatamax,$kflagselecttitle,$kinmailtemp) = split(/<>/,$_);
	}
	close KF;
}
#CGI情報ファイルのOPEN-------------------------------------------------------
sub cgi_open{
	open CGIIN,"$cgi_file" or die "$cgi_file オープン失敗";
		while (<CGIIN>){
			$_ =~ s/[\r\n\t\f]//g;;
			$copyright = $_;
		}
	close CGIIN;
	$copyright2 = $copyright;
	$copyright2 =~ s/&copy;/\(c\)/g;
	$copyright2 =~ s/<\/?$_[^>]*>//ig;
	$copyright2 =~ s/[\r\n\t\f]//g;
}
#メルマガ配信先データファイルのOPEN----------------------------------------------
sub f_open{
	$f_cnt = 0;
	open FF,"$f_file" or die "$f_file オープン失敗";
		while (<FF>){
			$_ =~ s/[ \r\n\t\f]//g;
			($f_mail[$f_cnt],$flag1[$f_cnt],$flag2[$f_cnt],$flag3[$f_cnt],
				$flag4[$f_cnt],$flag5[$f_cnt],$flag6[$f_cnt],$flag7[$f_cnt],
				$flag8[$f_cnt],$flag9[$f_cnt],$f_name[$f_cnt],$f_mm[$f_cnt],
				$f_dd[$f_cnt],$f_data1[$f_cnt],$f_data2[$f_cnt],$f_data3[$f_cnt],
				$f_data4[$f_cnt],$f_data5[$f_cnt]) = split(/\,/,$_);
			if($f_mail[$f_cnt] =~ /^$in_mail$/i or $f_mail[$f_cnt] eq $in_mail){
				if($in_start == 2){
					$del_name = $f_name[$f_cnt];
					$in_name = $f_name[$f_cnt];
				}
				$f_flag =1;
				$datano = $f_cnt;
			}
			$f_cnt++;
		}
	close FF;
	$idw_flag = 0;
	$md_cnt = 0;
	open MIN,"$m_file" or die "$m_file オープン失敗";
	while (<MIN>){
		$_ =~ s/[ \r\n\t\f]//g;
		($m_mail[$md_cnt],$m_id[$md_cnt],$damy) = split(/\,/,$_);
		$idw_flag = 1 if($m_id[$md_cnt] eq $in{'id'});
		$memberdata[$md_cnt] = $_;
		$md_cnt++;
	}
	close MIN;
}
#登録不許可データファイルのOPEN-----------------------------------------
sub key_open{
	open KEYIN,"$key_file" or die "$key_file オープン失敗";
		while (<KEYIN>){
			$_ =~ s/[\r\t\f\n]//g;
			@key_data = (@key_data,$_);
		}
	close KEYIN;
}
#データファイルのOPEN------------------------------------------------------
sub exitin_open{
	open EXINI,"$exitini_file" or die "$exitini_file オープン失敗";
		while (<EXINI>){
			$_ =~ s/[\r\t\f\n]//g;
			$exitini_data .= $_;
			$exitini_data .= "\n";
		}
	close EXINI;
}
#データファイルのOPEN------------------------------------------------------
sub exitout_open{
	open EXOUTI,"$exitouti_file" or die "$exitouti_file オープン失敗";
		while (<EXOUTI>){
			$_ =~ s/[\r\t\f\n]//g;
			$exitouti_data .= $_;
			$exitouti_data .= "\n";
		}
	close EXOUTI;
}
#連動設定--------------------------------------------------------------
sub connectin{
	local $connectset_file = 'def/connectset.dat';
	open COIN,"$connectset_file" or die "$connectset_file オープン失敗";
	while (<COIN>){
		$_ =~ s/[\r\t\f\n]//g;
		push @connectdatas,$_;
	}
	close COIN;
}
#購読者情報ファイルの読込-----------------------------------------------------
sub member_open{
	local $mmaindata = '';
	open MEMIN,"$member_file" or die "Cannot open $member_file:s!";
	while(<MEMIN>){
		$_ =~ s/[\r\n\t\f]//g;
		($mno[$mem_cnt],$mok[$mem_cnt],$mname[$mem_cnt],$mdata[$mem_cnt],$mdatain[$mem_cnt],$mdataintextsize[$mem_cnt]) = split(/<>/,$_);
		$mmaindata = $_ if($mem_cnt < 1);
		$mem_cnt++;
	}
	close MEMIN;
	($mno[0],$mymdon,$mymdname,$mhouon,$maddon,$mtelon,$mktelon,$mfaxon,
		$mfreeon1,$mfreename1,$mfreeon2,$mfreename2,$mfreeon3,$mfreename3,
		$mfreeon4,$mfreename4,$mfreeon5,$mfreename5,$midon,$midname,$mpasson) = split(/<>/,$mmaindata);
	if($maddon > 0){
		$post_cnt = 0;
		open POST,"def/post.csv";
		while(<POST>){
			$_ =~ s/[\r\n\t\f]//g;
			($postno[$post_cnt],$postname[$post_cnt]) = split(/\,/,$_);
			$post_cnt++;
		}
		close POST;
	}
}
#郵便番号情報の取得----------------------------------------------------
sub postcityopen{
	local $in_post1 = $_[0];
	local $in_post2 = $_[1];
	local $postfile = 'post/'.substr($in_post1,0,1).'.csv';
	local $check1 = $_[0].'0000';
	local $check2 = $in_post1.$in_post2;
	open PCIN,"$postfile";
	while(<PCIN>){
		$_ =~ s/[\r\n\t\f]//g;
		($pc_postno,$pc_ken,$pc_city) = split(/\,/,$_);
		if($pc_postno == $check1){
			$pc_ken1 = $pc_ken;
			$pc_city1 = $pc_city;
		}elsif($pc_postno == $check2){
			$pc_ken2 = $pc_ken;
			$pc_city2 = $pc_city; 
		}
	}
	close PCIN;
	if($pc_ken2){
		return($pc_ken2,$pc_city2);
	}else{
		return($pc_ken1,$pc_city1);
	}
}
sub dchange{
	local $msg = $_[0];
	local $htmlprev = $_[1];
	$msg =~ s/%MAIL%/$in_mail/g;
	$msg =~ s/<<mail>>/$in_mail/g;
	$encmail = $in_mail;
	$encmail =~ s/(\W)/'%'.unpack("H2", $1)/ego;
	$encmail =~ tr/ /+/;
	$msg =~ s/<<mail2>>/$encmail/g;
	if($mail_name >= 1){
		if($in_name){
			$msg =~ s/<<name>>/$in_name/g;
			$msg =~ s/%NAME%/$in_name/g;
			$subject1 =~ s/<<name>>/$in_name/g;
		}else{
			$msg =~ s/<<name>>/$in_mail/g;
			$msg =~ s/%NAME%/$in_mail/g;
			$subject1 =~ s/<<name>>/$in_mail/g;
		}
	}else{
		$msg =~ s/<<name>>/$in_mail/g;
		$msg =~ s/%NAME%/$in_mail/g;
		$subject1 =~ s/<<name>>/$in_mail/g;
	}
	$msg =~ s/<<ip>>/$usrip/g;
	$msg =~ s/%IP%/$usrip/g;
	local $pmmdd = "$in{'mm'}月$in{'dd'}日";
	$msg =~ s/%MMDD%/$pmmdd/g;
	$msg =~ s/%MDATA1%/$in{'data1'}/g;
	$msg =~ s/%MDATA2%/$in{'data2'}/g;
	$msg =~ s/%MDATA3%/$in{'data3'}/g;
	$msg =~ s/%MDATA4%/$in{'data4'}/g;
	$msg =~ s/%MDATA5%/$in{'data5'}/g;
	$msg =~ s/%ID%/$in{'id'}/g;
	$msg =~ s/%COMPANY%/$in{'memhou'}/g;
	local $padd = "〒".$in{'mempost1'}.'-'.$in{'mempost2'}."\n";
	$padd .= $in{'memken'}.$in{'memadd1'}."\n";
	$padd .= $in{'memadd2'} if($in{'memadd2'});
	if($htmlprev == 1){
		$padd =~ s/\n/<BR>/g;
	}
	$msg =~ s/%ADD%/$padd/g;
	$msg =~ s/%TEL%/$in{'memtel'}/g;
	$msg =~ s/%MO%/$in{'memktel'}/g;
	$msg =~ s/%FAX%/$in{'memfax'}/g;
	$msg =~ s/%FREE1%/$in{'memfree1'}/g;
	$msg =~ s/%FREE2%/$in{'memfree2'}/g;
	$msg =~ s/%FREE3%/$in{'memfree3'}/g;
	$msg =~ s/%FREE4%/$in{'memfree4'}/g;
	$msg =~ s/%FREE5%/$in{'memfree5'}/g;
	local $frcnt = 6;
	while($mem_cnt >= $frcnt){
		$bfname = '%FREE'.$frcnt.'%';
		$afname = 'memdata'.$frcnt;
		$prevafdata = $in{$afname};
		if($htmlprev == 1){
			$prevafdata =~ s/\n/<BR>/g;
		}else{
			$prevafdata =~ s/<BR>/\n/g;
		}
		$msg =~ s/$bfname/$prevafdata/g;
		$frcnt++;
	}
	$flagvalue = '';
	$flagcnt = 1;
	while(10 > $flagcnt){
		$hinname = 'flag'.$flagcnt;
		$hflagname = 'flagname'.$flagcnt;
		if($in{$hinname} == 1){
			$flagvalue .= "\n" if($flagvalue);
			$flagvalue .= $$hflagname;
		}
		$flagcnt++;
	}
	if($htmlprev == 1){
		$flagvalue =~ s/\n/<BR>/g;
	}
	$msg =~ s/%FLAG%/$flagvalue/g;
	return($msg);
}
#メールの配信準備--------------------------------------------------------
sub mail_to{
	$msg = '';
	$msg2 = '';
	open KAIN,"$ka_file" or die "$ka_file オープン失敗";
		while (<KAIN>){
			$_ =~s/[\n\r\t\f]//g; #v3.01追加
			$msg .= $_;
			$msg .= "\n";
		}
	close KAIN;
	$subject1 = $subject;
	#メールアドレスの挿入
	$msg =~ s/<<mail>>/$in_mail/g;
	$encmail = $in_mail;
	$encmail =~ s/(\W)/'%'.unpack("H2", $1)/ego;
	$encmail =~ tr/ /+/;
	$msg =~ s/<<mail2>>/$encmail/g;
	$subject1 =~ s/<<mail>>/$in_mail/g;
	#名前表示可
	if($mail_name >= 1){
		#名前が入力されている
		if($in_name){
			$subject1 =~ s/<<name>>/$in_name/g;
		}else{
			$subject1 =~ s/<<name>>/$in_mail/g;
		}
	#名前表示不可
	}else{
		$subject1 =~ s/<<name>>/$in_mail/g;
	}
	$subject3 = $subject1;
	$msg =~ s/<<ip>>/$usrip/g;
	$mailto = $in_mail;
	$msg .= "\n";
	$msg .= $copyright2;
	$msg = &dchange($msg);
	$msg3 = $msg;
	$m_cnt=0;
	#管理者E-mailアドレスの整理
	$fromname = '';
	if($kanriname){
		$fromname .= '"';
		$fromname .= $kanriname;
		$fromname .= '"<';
	}
	$fromname .= $mail;
	if($kanriname){
		$fromname .= '>';
	}
	$email = $fromname;
	unless($mail_on == 2){
		#メール送信のためjisコードに変換
		&jcode'convert($subject1,'jis');
		$subject1 = &mail64encode($subject1);
		@datas = split(/&#/,$msg);
		foreach $datas_(@datas){
			if($datas_ =~ /^[0-9]{5}\;/){
				$code = substr($datas_,0,5);
				$bmsg .= pack('n',$code);
				$tmsg = substr($datas_,6);
				$bmsg .= jcode::jis($tmsg);
			}else{
				$bmsg .= jcode::jis($datas_);
			}
		}
		unless($in{'returnmail'} eq 'no'){
			&sendmail($subject1,$email,$mailto,$bmsg);
		}
	}
	$msg2 = 'メルマガの購読開始・解除がありました。';
 	$msg2 .= "\n";
	$msg2 .= "------------------------\n";
	$msg2 .= "確認通知のタイトル＝$subject3\n";
	$msg2 .= "購読開始・解除があったアドレス＝$in_mail\n";
	$msg2 .= "ＩＰ＝$usrip\n";
	unless($mail_on == 2){
		$msg2 .= "確認通知として配信したメールは以下のとおりです。";
		$msg2 .= "\n";
		$msg2 .= "--------配信内容--------\n";
		$msg2 .= $msg3;
	}
	$mailto = $mail;
	$email = $in_mail;

	#題名をメール送信のためjisコードに変換
	$subject2 = $subject3;
	$subject2 .= "（管理者控）";
	if($mail_name >= 1){
		if($in_name){
			$subject2 =~ s/<<name>>/$in_name/g;
		}else{
			$subject2 =~ s/<<name>>/$in_mail/g;
		}
	}else{
		$subject2 =~ s/<<name>>/$in_mail/g;
	}
	&jcode'convert($subject2,'jis');
	$subject2 = &mail64encode($subject2);
	$msg2 = jcode::jis($msg2);
	unless($in{'kanrimail'} eq 'no'){
		&sendmail($subject2,$mail,$mailto,$msg2);
	}
}
#メール配信------------------------------------------------------
sub sendmail{
	local($subject, $from, $to, $body) = @_;
	if (!$to) { return(1); }
	if (!open(MAIL,"| $sendmail")) { return(1); }
	print MAIL "Return-Path: $errmail\n";
	print MAIL "Content-Type: text/plain; charset=iso-2022-jp\n";
	print MAIL "Content-Transfer-Encoding: 7bit\n";
	print MAIL "To: $to\n";
	print MAIL "From: $from\n";
	print MAIL "Subject: $subject\n";
	print MAIL $body;
	print MAIL "\n";
	close(MAIL);
	0;
}
sub mail64encode {
	local($subject) = $_[0];
	&jcode'convert(*subject, "jis");
	jcode::convert(\$body,'jis');
	$subject =~ s/\x1b\x28\x42/\x1b\x28\x4a/g;
	$subject = &base64encode($subject);
	return("=?iso-2022-jp?B?$subject?=\n");
}
sub base64encode {
	local($base) = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
		. "abcdefghijklmnopqrstuvwxyz"
		. "0123456789+/";
	local($xx, $yy, $zz, $i);
	$xx = unpack("B*", $_[0]);
	for ($i = 0; $yy = substr($xx, $i, 6); $i += 6) {
		$zz .= substr($base, ord(pack("B*", "00" . $yy)), 1);
		if (length($yy) == 2) {
			$zz .= "==";
		} elsif (length($yy) == 4) {
			$zz .= "=";
		}
	}
	return($zz);
}
#E-mailアドレスの削除------------------------------------------------------
sub s_write{
	open FOUT,">$f_file" or die "$f_file オープン失敗";
	$p_cnt=0;
	while($f_cnt > $p_cnt){
		unless($f_mail[$p_cnt] =~ /^$in_mail$/i){	
			print FOUT $f_mail[$p_cnt],',',$flag1[$p_cnt],',',$flag2[$p_cnt],',',$flag3[$p_cnt],',',
			$flag4[$p_cnt],',',$flag5[$p_cnt],',',$flag6[$p_cnt],',',$flag7[$p_cnt],',',$flag8[$p_cnt],',',
			$flag9[$p_cnt],',',$f_name[$p_cnt],',',$f_mm[$p_cnt],',',$f_dd[$p_cnt],',',$f_data1[$p_cnt],',',
			$f_data2[$p_cnt],',',$f_data3[$p_cnt],',',$f_data4[$p_cnt],',',$f_data5[$p_cnt],"\n";
		}
		$p_cnt++;
	}
	close FOUT;
	open MEMOUT,">$m_file" or die "$m_file オープン失敗";
	$r_cnt = 0;
	while($md_cnt > $r_cnt){
		unless($m_mail[$r_cnt] =~ /^$in_mail$/i){	
			print MEMOUT $memberdata[$r_cnt],"\n";
		}
		$r_cnt++;
	}
	close MEMOUT;
}
#E-mailアドレスの削除------------------------------------------------------
sub s_write2{
	open FOUT,">$f_file" or die "$f_file オープン失敗";
	$p_cnt=0;
	while($f_cnt > $p_cnt){
		unless($f_mail[$p_cnt] eq $in_mail){
			print FOUT $f_mail[$p_cnt],',',$flag1[$p_cnt],',',$flag2[$p_cnt],',',$flag3[$p_cnt],',',
			$flag4[$p_cnt],',',$flag5[$p_cnt],',',$flag6[$p_cnt],',',$flag7[$p_cnt],',',$flag8[$p_cnt],',',
			$flag9[$p_cnt],',',$f_name[$p_cnt],',',$f_mm[$p_cnt],',',$f_dd[$p_cnt],',',$f_data1[$p_cnt],',',
			$f_data2[$p_cnt],',',$f_data3[$p_cnt],',',$f_data4[$p_cnt],',',$f_data5[$p_cnt],"\n";
		}
		$p_cnt++;
	}
	close FOUT;

	open MEMOUT,">$m_file" or die "$m_file オープン失敗";
	$r_cnt = 0;
	while($md_cnt > $r_cnt){
		unless($f_mail[$p_cnt] eq $in_mail){
			print MEMOUT $memberdata[$r_cnt],"\n";
		}
		$r_cnt++;
	}
	close MEMOUT;
}
#E-mailアドレスのFLAG削除--------------------------------------------------
sub s_writeflagout{
	if($in{'flag1'}){	$flag1[$datano] = '';	}
	if($in{'flag2'}){	$flag2[$datano] = '';	}
	if($in{'flag3'}){	$flag3[$datano] = '';	}
	if($in{'flag4'}){	$flag4[$datano] = '';	}
	if($in{'flag5'}){	$flag5[$datano] = '';	}
	if($in{'flag6'}){	$flag6[$datano] = '';	}
	if($in{'flag7'}){	$flag7[$datano] = '';	}
	if($in{'flag8'}){	$flag8[$datano] = '';	}
	if($in{'flag9'}){	$flag9[$datano] = '';	}
	open FOUT,">$f_file" or die "$f_file オープン失敗";
	$p_cnt=0;
	while($f_cnt > $p_cnt){
		print FOUT $f_mail[$p_cnt],',',$flag1[$p_cnt],',',$flag2[$p_cnt],',',$flag3[$p_cnt],',',
			$flag4[$p_cnt],',',$flag5[$p_cnt],',',$flag6[$p_cnt],',',$flag7[$p_cnt],',',$flag8[$p_cnt],',',
			$flag9[$p_cnt],',',$f_name[$p_cnt],',',$f_mm[$p_cnt],',',$f_dd[$p_cnt],',',$f_data1[$p_cnt],',',
			$f_data2[$p_cnt],',',$f_data3[$p_cnt],',',$f_data4[$p_cnt],',',$f_data5[$p_cnt],"\n";
		$p_cnt++;
	}
	close FOUT;
}
#E-mailアドレス追加書き込み------------------------------------------------
sub write{
	local $flag=0;
	open FOUT,">$f_file" or die "$f_file オープン失敗";
	$p_cnt=0;
	while($f_cnt > $p_cnt){
		if($f_mail[$p_cnt] gt $in_mail && $flag == 0){
			print FOUT $in_mail,',',$in{'flag1'},',',$in{'flag2'},',',$in{'flag3'},',',
				$in{'flag4'},',',$in{'flag5'},',',$in{'flag6'},',',$in{'flag7'},',',$in{'flag8'},',',
				$in{'flag9'},',',$in_name,',',$in{'mm'},',',$in{'dd'},',',$in{'data1'},',',
				$in{'data2'},',',$in{'data3'},',',$in{'data4'},',',$in{'data5'},"\n";
			$flag = 1;
			#名前データ
		}
		print FOUT $f_mail[$p_cnt],',',$flag1[$p_cnt],',',$flag2[$p_cnt],',',$flag3[$p_cnt],',',
			$flag4[$p_cnt],',',$flag5[$p_cnt],',',$flag6[$p_cnt],',',$flag7[$p_cnt],',',$flag8[$p_cnt],',',
			$flag9[$p_cnt],',',$f_name[$p_cnt],',',$f_mm[$p_cnt],',',$f_dd[$p_cnt],',',$f_data1[$p_cnt],',',
			$f_data2[$p_cnt],',',$f_data3[$p_cnt],',',$f_data4[$p_cnt],',',$f_data5[$p_cnt],"\n";
		$p_cnt++;
	}
	unless($flag == 1){
		print FOUT $in_mail,',',$in{'flag1'},',',$in{'flag2'},',',$in{'flag3'},',',
			$in{'flag4'},',',$in{'flag5'},',',$in{'flag6'},',',$in{'flag7'},',',$in{'flag8'},',',
			$in{'flag9'},',',$in_name,',',$in{'mm'},',',$in{'dd'},',',$in{'data1'},',',
			$in{'data2'},',',$in{'data3'},',',$in{'data4'},',',$in{'data5'},"\n";
	}
	close FOUT;

	open MEMOUT,">$m_file" or die "$m_file オープン失敗";
	$r_cnt = 0;
	$flag = 0;
	while($md_cnt > $r_cnt){
		if($m_mail[$r_cnt] gt $in_mail && $flag == 0){
			print MEMOUT $in_mail,',',$in{'id'},',',$in{'memhou'},',',$in{'mempost1'},',',$in{'mempost2'},',',
				$in{'memken'},',',$in{'memadd1'},',',$in{'memadd2'},',',$in{'memtel'},',',
				$in{'memktel'},',',$in{'memfax'},',',$in{'memfree1'},',',$in{'memfree2'},',',
				$in{'memfree3'},',',$in{'memfree4'},',',$in{'memfree5'},',',$in{'mempass'};
			print MEMOUT ',',$addfrdata if($addfrdata);
			print MEMOUT "\n";
			$flag = 1;
		}
		print MEMOUT $memberdata[$r_cnt],"\n";
		$r_cnt++;
	}
	unless($flag == 1){
		print MEMOUT $in_mail,',',$in{'id'},',',$in{'memhou'},',',$in{'mempost1'},',',$in{'mempost2'},',',
			$in{'memken'},',',$in{'memadd1'},',',$in{'memadd2'},',',$in{'memtel'},',',
			$in{'memktel'},',',$in{'memfax'},',',$in{'memfree1'},',',$in{'memfree2'},',',
			$in{'memfree3'},',',$in{'memfree4'},',',$in{'memfree5'},',',$in{'mempass'};
			print MEMOUT ',',$addfrdata if($addfrdata);
			print MEMOUT "\n";
	}
	close MEMOUT;
}
#FLAGの追加書き込み-------------------------------------------------------
sub write_flagplus{
	if($in{'flag1'}){	$flag1[$datano] = 1;	}
	if($in{'flag2'}){	$flag2[$datano] = 1;	}
	if($in{'flag3'}){	$flag3[$datano] = 1;	}
	if($in{'flag4'}){	$flag4[$datano] = 1;	}
	if($in{'flag5'}){	$flag5[$datano] = 1;	}
	if($in{'flag6'}){	$flag6[$datano] = 1;	}
	if($in{'flag7'}){	$flag7[$datano] = 1;	}
	if($in{'flag8'}){	$flag8[$datano] = 1;	}
	if($in{'flag9'}){	$flag9[$datano] = 1;	}
	open FOUT,">$f_file" or die "$f_file オープン失敗";
	$p_cnt=0;
	while($f_cnt > $p_cnt){
		print FOUT $f_mail[$p_cnt],',',$flag1[$p_cnt],',',$flag2[$p_cnt],',',$flag3[$p_cnt],',',
			$flag4[$p_cnt],',',$flag5[$p_cnt],',',$flag6[$p_cnt],',',$flag7[$p_cnt],',',$flag8[$p_cnt],',',
			$flag9[$p_cnt],',',$f_name[$p_cnt],',',$f_mm[$p_cnt],',',$f_dd[$p_cnt],',',$f_data1[$p_cnt],',',
			$f_data2[$p_cnt],',',$f_data3[$p_cnt],',',$f_data4[$p_cnt],',',$f_data5[$p_cnt],"\n";
		$p_cnt++;
	}
	close FOUT;
}
#FLAGの置換え-------------------------------------------------------------
sub write_flagchange{
	$flag1[$datano] = $in{'flag1'};
	$flag2[$datano] = $in{'flag2'};
	$flag3[$datano] = $in{'flag3'};
	$flag4[$datano] = $in{'flag4'};
	$flag5[$datano] = $in{'flag5'};
	$flag6[$datano] = $in{'flag6'};
	$flag7[$datano] = $in{'flag7'};
	$flag8[$datano] = $in{'flag8'};
	$flag9[$datano] = $in{'flag9'};
	$f_name[$datano] = $in_name;
	$f_mm[$datano] = $in{'mm'};
	$f_dd[$datano] = $in{'dd'};
	$f_data1[$datano] = $in{'data1'};
	$f_data2[$datano] = $in{'data2'};
	$f_data3[$datano] = $in{'data3'};
	$f_data4[$datano] = $in{'data4'};
	$f_data5[$datano] = $in{'data5'};
	open FOUT,">$f_file" or die "$f_file オープン失敗";
	$p_cnt=0;
	while($f_cnt > $p_cnt){
		print FOUT $f_mail[$p_cnt],',',$flag1[$p_cnt],',',$flag2[$p_cnt],',',$flag3[$p_cnt],',',
			$flag4[$p_cnt],',',$flag5[$p_cnt],',',$flag6[$p_cnt],',',$flag7[$p_cnt],',',$flag8[$p_cnt],',',
			$flag9[$p_cnt],',',$f_name[$p_cnt],',',$f_mm[$p_cnt],',',$f_dd[$p_cnt],',',$f_data1[$p_cnt],',',
			$f_data2[$p_cnt],',',$f_data3[$p_cnt],',',$f_data4[$p_cnt],',',$f_data5[$p_cnt],"\n";
		$p_cnt++;
	}
	close FOUT;
}
#入力チェック-------------------------------------------------------------
sub check{
	#E-mail入力チェック
	unless($in_mail){
		$msg .= "E-mailアドレスが未入力です。<BR>";
	}
	#.を含むメールアドレスの正規表現
	$mail_regex=q{[-_.!~*'()a-zA-Z0-9;/?:&=+$,%#]+@(?:(?:[-a-z0-9]+\.)*[a-z]+|\[
	\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\])};
	# $email が正しいメールアドレスか判定する
	if($in_mail){
		if($in_mail !~ /^$mail_regex$/o) {
				$msg .= "E-mailアドレスに誤りがあります。<BR>";
		}
	}
	if($in_start == 1){
		if($mail_name == 2){
			unless($in_name){
				$msg .= "お名前が未入力です。<BR>";
			}
		}
		if($f_flag == 1 && $kinflag < 1){
			$msg .= "このE-mailアドレスは登録済です。<BR>";
		}
		$key_flag = '';
		foreach $key_text(@key_data){
			$key_flag = index $in_mail,$key_text;
			if($key_flag >=0){
				$key_out = 1;
			}
		}
		if($key_out == 1){
			$msg .= "このE-mailアドレスは登録出来ません。<BR>";
		}
		if($midon == 2){
			if($in{'id'}){
				$msg .= "入力した$midnameは使用されています。<BR>別の$midnameで登録して下さい。<BR>\n" if($idw_flag == 1);
				$msg .= "$midnameに半角英数以外の文字が入っています。<br>\n" if($in{"id"} =~ /[^a-zA-Z0-9-_]/);
				$idlength = length $in{'id'};
				$msg .= "$midnameは半角4文字以上で入力して下さい。<BR>\n" if($idlength < 4);
			}else{
				$msg .= "$midnameが未入力です。<BR>\n";
			}
			if($mpasson == 2){
				if($in{'mempass'}){
					$msg .= "パスワードに半角英数以外の文字が入っています。<br>\n" if($in{"mempass"} =~ /[^a-zA-Z0-9-_]/);
					$passlength = length $in{'mempass'};
					$msg .= "パスワードは半角4文字以上で入力して下さい。<BR>\n" if($passlength < 4);
				}else{
					$msg .= "パスワードが未入力です。<BR>\n";
				}
			}
		}
		if($mhouon == 2){
			$msg .= "法人名が未入力です。<BR>\n" unless($in{'memhou'});
		}
		if($maddon == 2){
			local $addflag = 0;
			$addflag = 1 unless($in{'mempost1'});
			$addflag = 1 unless($in{'mempost2'});
			$addflag = 1 unless($in{'memken'});
			$addflag = 1 unless($in{'memadd1'});
			$addflag = 1 if($in{'memadd1'} eq $in{'checkadd'});
			$msg .= "ご住所が未入力です。<BR>\n" if($addflag == 1);
		}
		if($mtelon == 2){
			if($in{'memtel'}){
				$msg .= "ＴＥＬに数字とハイフン以外の文字が入っています。<br>\n" if($in{'memtel'} =~ /[^\-0-9]/);
			}else{
				$msg .= "ＴＥＬが未入力です。<BR>\n";
			}
		}
		if($mktelon == 2){
			if($in{'memktel'}){
				$msg .= "携帯電話に数字とハイフン以外の文字が入っています。<br>\n" if($in{'memktel'} =~ /[^\-0-9]/);
			}else{
				$msg .= "携帯電話が未入力です。<BR>\n";
			}
		}
		if($mfaxon == 2){
			if($in{'memfax'}){
				$msg .= "ＦＡＸに数字とハイフン以外の文字が入っています。<br>\n" if($in{'memfax'} =~ /[^\-0-9]/);
			}else{
				$msg .= "ＦＡＸが未入力です。<BR>\n";
			}
		}
		$p_cnt = 1;
		while(5 >= $p_cnt){
			$monname = 'mfreeon'.$p_cnt;
			if($$monname == 2){
				$in_memname = 'memfree'.$p_cnt;
				unless($in{"$in_memname"}){
					$minname = 'mfreename'.$p_cnt;
					$msg .= $$minname."が未入力です。<BR>";
				}
			}
			$p_cnt++;
		}
	}else{
		unless($f_flag == 1){
			$msg .= "このE-mailアドレスは登録されていません。<BR>";
		}
	}
	#登録不許可データと照合
	if($msg){
		&err;
	}
}
#完了画面の表示----------------------------------------------------------
sub kanryou{
	&top;
	if($in_start==1){
		if($in_name){
			$exitini_data =~ s/<<name>>/$in_name/g;
		}else{
			$exitini_data =~ s/<<name>>/$in_mail/g;
		}
		$exitini_data =~ s/<<mail>>/$in_mail/g;
		$exitini_data =~ s/<<home>>/$i_url/g;
		$exitini_data =~ s/<<ip>>/$usrip/g;
		$exitini_data = &dchange($exitini_data,1);
		print $exitini_data;
		if(@connectdatas){
			$allvalue = '';
			foreach $allname_(@allname){
				next if($allname_ eq 'mensekidata');
				if($allvalue){
					$allvalue .= '&'.$allname_."=";
				}else{
					$allvalue .= 'index2.cgi?pmod=i&'.$allname_."=";
				}
				$encvalue = $in{$allname_};
				$encvalue =~ s/(\W)/'%'.unpack("H2", $1)/ego;
				$encvalue =~ tr/ /+/;
				$allvalue .= $encvalue;
			}
			foreach $connectdata(@connectdatas){
				$connectdata =~ s/kanri.cgi//g;
				$connectdata .= $allvalue;
				print "<IMG src=\"$connectdata\" width=\"0\" height=\"0\">\n";
			}
		}
	}elsif($in_start == 2){
		if($del_name){
			$exitouti_data =~ s/<<name>>/$del_name/g;
		}else{
			$exitouti_data =~ s/<<name>>/$in_mail/g;
		}
		$exitouti_data =~ s/<<mail>>/$in_mail/g;
		$exitouti_data =~ s/<<home>>/$i_url/g;
		$exitouti_data =~ s/<<ip>>/$usrip/g;
		print $exitouti_data;
	}
	&last;
}
#画像による完了画面
sub ikanryou{
	print "Content-type: image/gif\n\n";
	open IMG, "<$toumeiimg";
	binmode IMG;
	binmode STDOUT;
	while(<IMG>){
		print;
	}
	close IMG;
	exit;
}
#エラー処理--------------------------------------------------------------
sub err{
	#ロック解除
	&c_lock;
	if($in{'pmod'} eq 'i'){
		&ikanryou;
	}
	&top;
	print "<BR>\n";
	print "<font color=\"#ff0000\">\n";
	print $msg;
	print "</FONT>\n";
	print "<br><br>戻るボタンで戻り修正して下さい。<br>\n";
	&last;
}
sub toconfirm{
	#ロック解除
	&c_lock;
	&top;
	print "<font size=\"$word_size\" color=\"$word_color\">\n";
	print "<br><br>\n";
	print "購読開始には本人確認が必要です。<BR><BR>\n";
	print "<A href=\"iconfirm.cgi\">";
	print "購読開始はこちらから";
	print "</A>\n";
	print "<BR><BR>\n";
	print "</font>\n";
	&last;
}
#メニューの表示----------------------------------------------------------
sub prev{
	&top;
	$agent = $ENV{'HTTP_USER_AGENT'};
	print "<form action=\"$cgi\" method=\"post\">\n";
	print "■購読開始はこちら\n";
	print "<br>\n";
	if($kmensekion < 1){
		print "・<A href=\"mensekiprev\.cgi\">免責事項</A>の同意<BR>\n";
		print "<INPUT type=\"radio\" name=\"mensekion\" value=\"0\">\n";
		print "同意する<BR>\n";
		print "<INPUT type=\"radio\" name=\"mensekion\" value=\"1\" checked>\n";
		print "同意しない\n";
		print "<BR>\n";
	}
#ＩＤ
	if($midon > 0){
		print "<BR>\n";
		print "・$midname\n";
		print "（必須）";
		print "<BR>\n";
		print "<INPUT type=\"text\" size=\"10\" name=\"id\" value=\"$in{'id'}\" maxlength=\"20\"";
		if($agent =~ /DoCoMo/){
			print " istyle=\"3\"";
		}elsif($agent =~ /UP.Browser/){
			print " format=\"*\m\"";
		}elsif($agent =~ /J-PHONE|Vodafone|SoftBank/){
			print " MODE=\"alphabet\"";
		}
		print ">\n";
		print "<BR>\n";
	}
#法人名
	if($mhouon > 0){
		print "<BR>\n";
		print "・法人名\n";
		if($mhouon == 2){	print "（必須）";	}
		print "<BR>\n";
		print "<INPUT type=\"text\" name=\"memhou\" value=\"$in{'hou'}\" maxlength=\"64\">\n";
		print "<BR>\n";
	}
#お名前
	if($mail_name >= 1){
		print "<BR>\n";
		print "・お名前\n";
		if($mail_name == 2){	print "（必須）";	}
		print "<BR>\n";
		print "<input type=\"text\" name=\"name\" value=\"$in_name\" maxlength=\"64\">\n";
		print "<BR>\n";
	}
#E-mail
	print "<BR>\n";
	print "・E-mail（必須）\n";
	print "<BR>\n";
	$agent = $ENV{'HTTP_USER_AGENT'};
	print "<input type=\"text\" name=\"mail\" value=\"$in_mail\" maxlength=\"64\"";
	if($agent =~ /DoCoMo/){
		print " istyle=\"3\"";
	}elsif($agent =~ /UP.Browser/){
		print " format=\"*\m\"";
	}elsif($agent =~ /J-PHONE|Vodafone|SoftBank/){
		print " MODE=\"alphabet\"";
	}
	print ">\n";
	print "<BR>\n";
#ご住所
	if($maddon > 0){
		print "<BR>\n";
		print "・ご住所\n";
		if($maddon == 2){	print "（必須）";	}
		print "<BR>\n";
		print "〒<INPUT type=\"text\" size=\"3\" name=\"mempost1\" value=\"$in{'mempost1'}\" maxlength=\"3\"";
		#数字入力
		if($agent =~ /DoCoMo/){
			print " istyle=\"4\"";
		}elsif($agent =~ /UP.Browser/){
			print " format=\"*N\"";
		}elsif($agent =~ /J-PHONE|Vodafone|SoftBank/){
			print " MODE=\"numeric\"";
		}
		print ">\n";
		print "−";
		print "<INPUT type=\"text\" size=\"4\" name=\"mempost2\" value=\"$in{'mempost2'}\" maxlength=\"4\"";
		#数字入力
		if($agent =~ /DoCoMo/){
			print " istyle=\"4\"";
		}elsif($agent =~ /UP.Browser/){
			print " format=\"*N\"";
		}elsif($agent =~ /J-PHONE|Vodafone|SoftBank/){
			print " MODE=\"numeric\"";
		}
		print ">\n";
		print "<BR>\n";
		print "<SELECT name=\"memken\">\n";
		print "<OPTION value=\"$in{'ken'}\">$in{'ken'}\n" if($in{'ken'});
		print "<OPTION value=\"\">選択\n";
		$post_pcnt = 0;
		while($post_cnt > $post_pcnt){
			print "<OPTION value=\"$postname[$post_pcnt]\">$postname[$post_pcnt]\n";
			$post_pcnt++;
		}
		print "</SELECT>\n";
		print "<BR>\n";
		print "市町村〜番地<BR><INPUT type=\"text\" name=\"memadd1\" value=\"$in{'memadd1'}\" maxlength=\"64\">\n";
		print "<INPUT type=\"hidden\" name=\"checkadd\" value=\"$in{'memadd1'}\">\n";
		print "<BR>\n";
		print "アパート、マンション<BR><INPUT type=\"text\" name=\"memadd2\" value=\"$in{'memadd2'}\" maxlength=\"64\">\n";
		print "<BR>\n";
	}
#TEL
	if($mtelon > 0){
		print "<BR>\n";
		print "・ＴＥＬ\n";
		if($mtelon == 2){	print "（必須）";	}
		print "<BR>\n";
		print "<INPUT type=\"text\" name=\"memtel\" value=\"$in{'tel'}\" maxlength=\"20\"";
		#数字入力
		if($agent =~ /DoCoMo/){
			print " istyle=\"4\"";
		}elsif($agent =~ /UP.Browser/){
			print " format=\"*N\"";
		}elsif($agent =~ /J-PHONE|Vodafone|SoftBank/){
			print " MODE=\"numeric\"";
		}
		print ">\n";
		print "<BR>\n";
	}
#携帯
	if($mktelon > 0){
		print "<BR>\n";
		print "・携帯電話\n";
		if($mktelon == 2){	print "（必須）";	}
		print "<BR>\n";
		print "<INPUT type=\"text\" name=\"memktel\" value=\"$in{'keitai'}\" maxlength=\"20\"";
		#数字入力
		if($agent =~ /DoCoMo/){
			print " istyle=\"4\"";
		}elsif($agent =~ /UP.Browser/){
			print " format=\"*N\"";
		}elsif($agent =~ /J-PHONE|Vodafone|SoftBank/){
			print " MODE=\"numeric\"";
		}
		print ">\n";
		print "<BR>\n";
	}
#FAX
	if($mfaxon > 0){
		print "<BR>\n";
		print "・ＦＡＸ\n";
		if($mfaxon == 2){	print "（必須）";	}
		print "<BR>\n";
		print "<INPUT type=\"text\" name=\"memfax\" value=\"$in{'fax'}\" maxlength=\"20\"";
		#数字入力
		if($agent =~ /DoCoMo/){
			print " istyle=\"4\"";
		}elsif($agent =~ /UP.Browser/){
			print " format=\"*N\"";
		}elsif($agent =~ /J-PHONE|Vodafone|SoftBank/){
			print " MODE=\"numeric\"";
		}
		print ">\n";
		print "<BR>\n";
	}
#自由項目
	$p_cnt = 1;
	while(5 >= $p_cnt){
		$monname = 'mfreeon'.$p_cnt;
		$minname = 'mfreename'.$p_cnt;
		$in_mname = 'member'.$p_cnt;
		if($$monname > 0){
			print "<BR>\n";
			print "・";
			print $$minname;
			if($$monname == 2){	print "（必須）";	}
			print "<BR>\n";
			print "<INPUT type=\"text\" name=\"memfree$p_cnt\" value=\"$$in_mname\" maxlength=\"64\">\n";
			print "<BR>\n";
		}
		$p_cnt++;
	}
	$p_cnt = 6;
	while($mem_cnt >= $p_cnt){
		if($mok[$p_cnt] > 0){
			print "<BR>\n";
			print "・";
			print $mname[$p_cnt],"\n";
			if($mok[$p_cnt] == 2){	print "（必須）";	}
			print "<BR>\n";
			if($mdatain[$p_cnt] == 1){
				$in_dataname = 'memdata'.$p_cnt;
				print "<INPUT type=\"text\" name=\"memdata$p_cnt\" value=\"$in{$in_dataname}\" maxlength=\"64\">\n";
				print "<BR>\n";
			}elsif($mdatain[$p_cnt] == 2){
				@pdata = split(/\,/,$mdata[$p_cnt]);
				foreach $_(@pdata){
					print "<INPUT type=\"radio\" name=\"memdata$p_cnt\" value=\"$_\"";
					print " checked" if($in{"memdata$p_cnt"} eq $_);
					print ">$_";
					print "<BR>\n";
				}
			}elsif($mdatain[$p_cnt] == 3){
				@pdata = split(/\,/,$mdata[$p_cnt]);
				$checkcnt = 0;
				foreach $_(@pdata){
					print "<INPUT type=\"checkbox\" name=\"memdata$p_cnt","br$checkcnt\" value=\"$_\"";
					$in_dataname = 'memdata'.$p_cnt.'br'.$checkcnt;
					print " checked" if($in{$in_dataname} eq $_);
					print ">$_";
					print "<BR>\n";
					$checkcnt++;
				}
				print "<INPUT type=\"hidden\" name=\"memcbox$p_cnt\" value=\"$checkcnt\">\n";
			}else{
				print "<SELECT name=\"memdata$p_cnt\">";
				$in_dataname = 'data'.$p_cnt;
				print "<OPTION value=\"$in{$in_dataname}\">$in{$in_dataname}\n" if($in{$in_dataname});
				print "<OPTION value=\"\">選択\n";
				@pdata = split(/\,/,$mdata[$p_cnt]);
				foreach $_(@pdata){
					print "<OPTION value=\"$_\">$_\n";
				}
				print "</SELECT>\n";
				print "<BR>\n";
			}
		}
		$p_cnt++;
	}
#選択項目
	if($mok[0] > 0){
		print "<BR>\n";
		print "・",$mname[0],"\n";
		if($mok[0] == 2){	print "（必須）";	}
		print "<BR>\n";
		print "<SELECT name=\"mm\">\n";
		print "<OPTION value=\"\">選択\n";
		$p_mm = 1;
		while(12 >= $p_mm){
			print "<OPTION value=\"$p_mm\">$p_mm\n";
			$p_mm++;
		}
		print "</SELECT>\n";
		print "月\n";
		print "<SELECT name=\"dd\">\n";
		print "<OPTION value=\"\">選択\n";
		$p_dd = 1;
		while(31 >= $p_dd){
			print "<OPTION value=\"$p_dd\">$p_dd\n";
			$p_dd++;
		}
		print "</SELECT>\n";
		print "日\n";
		print "<BR>\n";
	}
	$p_cnt = 1;
	while(5 >= $p_cnt){
		if($mok[$p_cnt] > 0){
			print "<BR>\n";
			print "・",$mname[$p_cnt],"\n";
			if($mok[$p_cnt] == 2){	print "（必須）";	}
			print "<BR>\n";
			print "<SELECT name=\"data$p_cnt\">";
			print "<OPTION value=\"\">選択\n";
			@pdata = split(/\,/,$mdata[$p_cnt]);
			foreach $_(@pdata){
				print "<OPTION value=\"$_\">$_\n";
			}
			print "</SELECT>\n";
			print "<BR>\n";
		}
		$p_cnt++;
	}
	if($in{'flag'} eq 'select'){
		print "<BR>\n";
		if($kflagselecttitle){
			print "・$kflagselecttitle\n";
		}else{
			print "・選択\n";
		}
		print "<BR>\n";
		$p_cnt = 1;
		while(9 >= $p_cnt){
			$pflagname = 'flagname'.$p_cnt;
			if($$pflagname){
				print "<INPUT type=\"checkbox\" name=\"flag$p_cnt\" value=\"1\">\n";
				print $$pflagname,"<BR>\n";
			}
			$p_cnt++;
		}
	}else{
		$flagcnt = 1;
		while(9 >= $flagcnt){
			if($in{"flag$flagcnt"} == 1){
				print "<input type=\"hidden\" name=\"flag$flagcnt\" value=\"1\">\n";
			}
			$flagcnt++;
		}
	}

#パスワード
	if($midon > 0 && $mpasson > 0){
		print "<BR>\n";
		print "・パスワード\n";
		print "（必須）";
		print "<BR>\n";
		print "<INPUT type=\"password\" size=\"10\" name=\"mempass\" value=\"$in{'mempass'}\" maxlength=\"64\">\n";
		print "<BR>\n";
	}
	print "<BR>\n";
	print "<input type=\"hidden\" name=\"start\" value=\"1\">\n";
	print "<input type=\"hidden\" name=\"mode\" value=\"imaga\">\n";
	print "<input type=\"submit\" value=\"送信\">\n";
	print "</form>\n";
	if($in{'dele'} ne 'no'){
		print "<BR>\n";
		print "<form action=\"$cgi\" method=\"post\">\n";
		print "<font size=\"title_size\" color=\"$title_color\">\n";
		print "■購読解除はこちら\n";
		print "</font>\n";
		print "<BR>\n";
		print "・E-mailアドレス<BR>\n";
		print "<input type=\"text\" name=\"mail\" value=\"$in_mail\" maxlength=\"64\"";
		if($agent =~ /DoCoMo/){
			print " istyle=\"3\"";
		}elsif($agent =~ /UP.Browser/){
			print " format=\"*\m\"";
		}elsif($agent =~ /J-PHONE|Vodafone|SoftBank/){
			print " MODE=\"alphabet\"";
		}
		print ">\n";
		print "<input type=\"hidden\" name=\"start\" value=\"2\">\n";
		print "<BR>\n";
		print "<input type=\"submit\" value=\"送信\">\n";
		print "</form>\n";
	}
	&last;
}
#HTMLprintサブルーチン---------------------------------------------------
sub top{
	print "Content-type:text/html\n\n";
	print "<html><head>\n";
	print "<META http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">\n";
	print "<META http-equiv=\"Content-Style-Type\" content=\"text/css\">\n";
	print "<title>$title</title>\n";
	print "</head>\n";
	print "<body bgcolor=\"$ibgcolor\" background=\"$i_bg_file\">\n";
	print "<font size=\"$word_size\" color=\"$word_color\">\n";
	print $htmltop;
	if($i_logo){
		print "<IMG src=\"$i_logo\">\n";
		print "<br>\n";
	}
	unless($title_on == 2){
		print "<table border=\"0\" cellpadding=\"0\" cellspacing=\"1\" bgcolor=\"$table_color\">\n";
		print "<tr bgcolor=\"$td_color\">\n";
		print "<td align=center>\n";
		print "<font size=\"$title_size\" color=\"$title_color\">\n";
		print "$title\n";
		print "</font>\n";
		print "</td>\n";
		print "</tr>\n";
		print "</table>\n";
		print "<BR>\n";
	}
}
sub last{
	print $htmllast;
	if($copyright){
		print "<BR>\n";
		print $copyright;
	}
	print "</font>\n";
	print "</body></html>\n";
	exit;
}
#データロック------------------------------------------------
sub o_lock{
	open(LOCK,">data.lock");
	flock(LOCK,2);
}
#ロック解除--------------------------------------------------
sub c_lock{
	close(LOCK);
}