#!/usr/local/bin/perl --
# #################################################
# #
# #-学文社(プロフィール入力)-
# #
# #CONTENTS CO., LTD
# #N.Seto
# #
# #update 2008/2/1
# #※firefox文字化け(エラー・サンクスページ)charset修正
# #update 2006/03/01
# #※媒体コード自動設定
# #update 2005/12/26
# #※請求フォーム地色の一括設定
# #update 2005/08/11
# #※特定文字の文字化け変換(profile_mojibake.pl)
# #update 2003/10/10
# #※請求者への返信文改訂(profile_henshin.pl)
# #update 2003/1/16
# #※特定メールアドレス抑制(profile_yokusei.pl)
# #update 2001/12/12
# #※請求者への自動返信追加
# #update 2017/8/18
# #※漢字の謎資料請求者用フォーム追加
# #
# #################################################
# -------------------------------------------------
# 以下設定項目です
# -------------------------------------------------
# ######## 媒体コード設定 ######## #
# 今日の年月を取得
($second, $minute, $hour, $day, $month, $year, $wday, $yday, $isdst) = localtime;
@month = ('01','02','03','04','05','06','07','08','09','10','11','12');
$year += 1900;
# 月
$now_m = $month[$month];
# 年月
$now_ym = sprintf("%d%02d", $year, $month[$month]);
$adc1 = '805'; # 媒体コード(???-***)
$adc3 = '1'; # 企画コード(枝番末尾:***-**?)
$adc4 = 'A8net_'; # 媒体名
$adc2 = '031'; # 手動時 枝番(***-???)
$adc5 = '201703'; # 手動時 年月
#(0:手動 1:自動)
$adflag = 0;
if($adflag == 1)
{
$ad_code = $adc1."-".$now_m.$adc3.":".$adc4.$now_ym;
}
else
{
$ad_code = $adc1."-".$adc2.":".$adc4.$adc5;
}
# ######## 請求フォーム色設定 ######## #
#タイトル行
$color01 = '#99FF99';
#講座名
$color02 = '#FFFFFF';
#入力項目
$color03 = '#FFFF99';
#入力項目2
$color04 = '#FFFFBB';
# ######## 初期設定 ######## #
sub first
{
# ##基本的設定## #
# jcodeの有[0]無し[1]
$jcodeflag = 1;
# タグに変換[0]/無変換[1]
$tagflag = 0;
# ログの保存[1]/非保存[0]
$saveflag = 0;
# メールの送信[1]/非送信[0]
$mailflag = 1;
# このファイルのファイル名
$this = './profile_a.cgi';
# サンクス画面ジャンプ先
$url = 'http://www';
# ファイルへのパス
$path = './';
# クッキー情報保持期間
$cookie_hold = 180;
# 文字化けプログラム取得
require '../profile_mojibake.pl';
# 特定メール抑制プログラム取得
require '../profile_yokusei.pl';
# 返信メール文取得
require '../profile_henshin_ad.pl';
# jcodeに関する設定
if($jcodeflag == 1)
{
$jcode = '../jcode.pl';
require "$jcode";
}
# ログ保存に関する設定
if($saveflag == 1)
{
# flock不使用[0]/flock使用[1]/flock不使用[2](UNIX ONLY)/flock不使用[3](UNIX and NT)/flock不使用[4](can't rename and procces NT system)
$flockflag = 1;
# 拡張子の指定
$ext = 'dat';
# ログ保存用のファイル指定
$logfile = "./.$ext";
}
return;
}
# ######## 初期設定2 ######## #→→→「profile_yokusei.pl」へ移行
sub second
{
# メールの送信元
if($form09 eq '')
{$mail_from_admin = 'thanks@gakubun.co.jp';}
else
{$mail_from_admin = $form09;}
# ユーザーメールの送信先
if($form09 eq '')
{$mail_to_user = 'thanks@gakubun.co.jp';}
else
{$mail_to_user = $form09;}
}
# -------------------------------------------------
# 設定項目はここまでです
# -------------------------------------------------
# ######## メイン ######## #
&first;
&form_decode;
# プロフィール入力画面
if($mode eq '')
{
&check_data;
&get_cookie;
&profile_html;
}
# 登録確認
elsif($mode eq 'confirm')
{
&connect_data_ad;
&check_data_ad;
# &check_mail($form09);
&check_mail_2($form09);
&mail_yokusei;
&confirm_html;
&save_cookies;
}
# 登録
elsif($mode eq 'regist')
{
# &second;
&second_ad;
if($mailflag == 1)
{
&sendmail_user;
&sendmail_admin;
}
if($saveflag == 1)
{
&check_double;
&save_log;
}
&html_tag('thanks', 'ありがとうございました');
}
exit;
# ########フォームからのデータ処理######## #
sub form_decode
{
if($ENV{'REQUEST_METHOD'} eq 'POST')
{
if($ENV{'CONTENT_LENGTH'} > 204800){&error('COMMENT DATA IS OVER FLOWED');}
read(STDIN, $QUERY_DATA, $ENV{'CONTENT_LENGTH'});
}
else {$QUERY_DATA = $ENV{'QUERY_STRING'};}
@pairs = split(/&/, $QUERY_DATA);
foreach $pair (@pairs)
{
if($pair eq 'test') {&error('TEST OK');}
($key, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
&jcode'h2z_sjis(*value); # 半角カナ→全角(SJIS)変換
# ログファイルを作る場合
if($saveflag == 1)
{
# CSV形式の記録ならば「,」を大文字に変換
if($ext eq 'csv') {$value =~ s/\,/,/g;}
# CSVでなければ区切り文字である「<>」を大文字に変換
else {$value =~ s/<>/<>/g;}
}
# タグを使用するならばHTML文字に変換
if($tagflag == 1)
{
$value =~ s/&/&/g;
$value =~ s/"/"/g;
$value =~ s/</g;
$value =~ s/>/>/g;
$value =~ s/\r\n/
/g;
$value =~ s/\r|\n/
/g;
}
# それ以外時の変換
else
{
}
if($jcodeflag == 1)
{
# &jcode'h2z_sjis(\$value);
&jcode'convert(*value,'euc');
}
# 同じNAMEで送信されたら「、」で繋ぐ
if($$key ne '') {$$key .= "、";}
$$key .= $value;
}
return;
}
# ######## タグ変換 ######## #
sub tag_convert
{
$_[0] =~ s/&/&/g;
$_[0] =~ s/"/"/g;
$_[0] =~ s/</g;
$_[0] =~ s/>/>/g;
# $_[0] =~ s/ / /g;
$_[0] =~ s/\r\n/
/g;
$_[0] =~ s/\r|\n/
/g;
return;
}
# ######## タグ変換 ######## #
sub confirm_convert
{
$_[0] =~ s/&/&/g;
$_[0] =~ s/"/"/g;
return;
}
# ######## タグ逆変換 ######## #
sub tag_invert
{
$_[0] =~ s/
/\n/g;
$_[0] =~ s/ / /g;
$_[0] =~ s/>/>/g;
$_[0] =~ s/</ 2) {&error("「2講座まで資料請求することが可能です」
");}
if($class eq '') {$error .= "「資料請求したい講座が選ばれていません」
"}
if($error ne '') {&error("$error
");}
}
if($mode eq 'confirm')
{
if($first eq '') {$error .= "「第一希望チェック欄」
"}
# if($form0101 eq '') {$error .= "「姓(ふりがな)」
"}
# if($form0102 eq '') {$error .= "「名(ふりがな)」
"}
# if($form0201 eq '') {$error .= "「姓」
"}
# if($form0202 eq '') {$error .= "「名」
"}
# if($zip eq '-') {$error .= "「郵便番号」
"}
# if($address eq '') {$error .= "「住所」
"}
# if($form0702 eq ''|$form0703 eq '') {$error .= "「誕生日」
"}
# if($age eq '') {$error .= "「年齢」
"}
# if($tel eq '--') {$error .= "「電話番号」
"}
if($tel2 !~/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/) {$error .= "「電話番号」
"}
# if($birth eq '19年月日') {$error .= "「生年月日」
"}
# if($form08 eq '') {$error .= "「職業」
"}
# if($form09 eq '') {$error .= "「E-mailアドレス」
"}
# if($form10 eq '') {$error .= "「性別」
"}
if($error ne '') {&error("$error
上記の項目に記入漏れがございます");}
}
# ######## カンマ(,)エラー ######## #
if($mode eq 'confirm')
{
if($name1 =~/,/){$error .= "「ふりがな」
"}
if($name2 =~/,/){$error .= "「氏名」
"}
if($zip =~/,/){$error .= "「郵便番号」
"}
if($address =~/,/){$error .= "「住所」
"}
if($tel =~/,/){$error .= "「電話番号」
"}
if($form06 =~/,/){$error .= "「携帯電話」
"}
if($age =~/,/){$error .= "「年齢」
"}
if($birth =~/,/){$error .= "「生年月日」
"}
if($form09 =~/,/){$error .= "「E-mailアドレス」
"}
if($form1102 =~/,/){$error .= "「10) 1.サーチエンジン:その他」
"}
if($form1202 =~/,/){$error .= "「10) 2.雑誌広告:その他」
"}
if($form1302 =~/,/){$error .= "「10) 3.新聞広告:その他」
"}
if($form1402 =~/,/){$error .= "「10) 4.バナー広告:その他」
"}
if($form1502 =~/,/){$error .= "「10) 5.メールマガジン:その他」
"}
if($form16 =~/,/){$error .= "「10) 6.その他」
"}
if($error ne '') {&error("$error
上記の項目にカンマ(,)が入っています
カンマは送信エラーの原因になりますので、別の語句に置き換えてください");}
}
# ######## 海外住所エラー(市郡区・町名にアルファベットが入っている) ######## #
if($mode eq 'confirm')
{
if($form0401 =~/[a-zA-Z]/){$error .= "「住所(市郡区)」"}
if($error ne '') {&error("$errorにアルファベットが入っています
発送対象地域は日本国内のみですのでご了解ください");}
}
return;
}
# ######## メールの型チェック ######## #
sub check_mail
{
if($_[0] !~ /^[\w\.\-]+\@[\w\.\-\?]+$/)
{
&error('「E-mail」が正しくありません');
}
return;
}
# ######## メールの型チェック2######## #
sub check_mail_2
{
$email_c_data = $_[0];
$email_c_data =~ s/@/@/g;
$email_c_data =~ s/,/./g;
$email_c_data =~ s/././g;
$email_c_data =~ s/、/./g;
$email_c_data =~ s/,/./g;
$email_c_data =~ s/。/./g;
$mail_first = substr($email_c_data,0,1);
$mail_end = chop($email_c_data);
if($mail_first eq '@' | $mail_first eq '.'){$check_first = 'error'}else{$check_first = 'ok'}
if($mail_end eq '@' | $mail_end eq '.'){$check_end = 'error'}else{$check_end = 'ok'}
if($_[0] eq ''){}
elsif($email_c_data !~ /(.*)\@(.*)\.(.*)/)
{
&error('「E-mail」アドレスが正しくありません。
E-mailは必ず半角英数で入力してください。');
}
elsif($check_first eq 'error' | $check_end eq 'error')
{
&error('「E-mail」が正しくありません');
}
return;
}
# ######## ログの保存 ######## #
sub save_log
{
@data = &openfile_r($logfile);
unshift @data, "\n";
&openfile_w($logfile, @data);
return;
}
# ######## 2重書き込みチェック ######## #
sub check_double
{
@data = &openfile_r($logfile);
foreach $line (@data)
{
# ($, $) = split(//, $line);
# if($ eq $) {&error('2重書き込み');}
}
return;
}
# ######## プロフィールHTML ######## #
sub profile_html
{
# 文字化け変換(profile_mojibake.pl)
&mojibake;
if($c_form0702 eq '1') {$birth_mon01 = 'SELECTED';}
elsif($c_form0702 eq '2') {$birth_mon02 = 'SELECTED';}
elsif($c_form0702 eq '3') {$birth_mon03 = 'SELECTED';}
elsif($c_form0702 eq '4') {$birth_mon04 = 'SELECTED';}
elsif($c_form0702 eq '5') {$birth_mon05 = 'SELECTED';}
elsif($c_form0702 eq '6') {$birth_mon06 = 'SELECTED';}
elsif($c_form0702 eq '7') {$birth_mon07 = 'SELECTED';}
elsif($c_form0702 eq '8') {$birth_mon08 = 'SELECTED';}
elsif($c_form0702 eq '9') {$birth_mon09 = 'SELECTED';}
elsif($c_form0702 eq '10') {$birth_mon10 = 'SELECTED';}
elsif($c_form0702 eq '11') {$birth_mon11 = 'SELECTED';}
elsif($c_form0702 eq '12') {$birth_mon12 = 'SELECTED';}
if($c_form0703 eq '1') {$birth_day01 = 'SELECTED';}
elsif($c_form0703 eq '2') {$birth_day02 = 'SELECTED';}
elsif($c_form0703 eq '3') {$birth_day03 = 'SELECTED';}
elsif($c_form0703 eq '4') {$birth_day04 = 'SELECTED';}
elsif($c_form0703 eq '5') {$birth_day05 = 'SELECTED';}
elsif($c_form0703 eq '6') {$birth_day06 = 'SELECTED';}
elsif($c_form0703 eq '7') {$birth_day07 = 'SELECTED';}
elsif($c_form0703 eq '8') {$birth_day08 = 'SELECTED';}
elsif($c_form0703 eq '9') {$birth_day09 = 'SELECTED';}
elsif($c_form0703 eq '10') {$birth_day10 = 'SELECTED';}
elsif($c_form0703 eq '11') {$birth_day11 = 'SELECTED';}
elsif($c_form0703 eq '12') {$birth_day12 = 'SELECTED';}
elsif($c_form0703 eq '13') {$birth_day13 = 'SELECTED';}
elsif($c_form0703 eq '14') {$birth_day14 = 'SELECTED';}
elsif($c_form0703 eq '15') {$birth_day15 = 'SELECTED';}
elsif($c_form0703 eq '16') {$birth_day16 = 'SELECTED';}
elsif($c_form0703 eq '17') {$birth_day17 = 'SELECTED';}
elsif($c_form0703 eq '18') {$birth_day18 = 'SELECTED';}
elsif($c_form0703 eq '19') {$birth_day19 = 'SELECTED';}
elsif($c_form0703 eq '20') {$birth_day20 = 'SELECTED';}
elsif($c_form0703 eq '21') {$birth_day21 = 'SELECTED';}
elsif($c_form0703 eq '22') {$birth_day22 = 'SELECTED';}
elsif($c_form0703 eq '23') {$birth_day23 = 'SELECTED';}
elsif($c_form0703 eq '24') {$birth_day24 = 'SELECTED';}
elsif($c_form0703 eq '25') {$birth_day25 = 'SELECTED';}
elsif($c_form0703 eq '26') {$birth_day26 = 'SELECTED';}
elsif($c_form0703 eq '27') {$birth_day27 = 'SELECTED';}
elsif($c_form0703 eq '28') {$birth_day28 = 'SELECTED';}
elsif($c_form0703 eq '29') {$birth_day29 = 'SELECTED';}
elsif($c_form0703 eq '30') {$birth_day30 = 'SELECTED';}
elsif($c_form0703 eq '31') {$birth_day31 = 'SELECTED';}
if($c_form08 eq '会社員') {$job01 = 'SELECTED';}
elsif($c_form08 eq '主婦') {$job02 = 'SELECTED';}
elsif($c_form08 eq '学生') {$job03 = 'SELECTED';}
elsif($c_form08 eq '自営業') {$job04 = 'SELECTED';}
elsif($c_form08 eq 'その他') {$job05 = 'SELECTED';}
if($c_form10 eq '男性') {$sex01 = 'CHECKED';}
elsif($c_form10 eq '女性') {$sex02 = 'CHECKED';}
@class = split(/、/, $class);
if($class[0] eq $first) {$first01 = 'checked';}
elsif($class[1] eq $first) {$first02 = 'checked';}
$profile =<< "END";
Content-type: text/html; charset=SJIS
無料案内資料請求フォーム
END
&jcode'convert(*profile,'sjis');
print $profile;
exit;
}
# ######## 確認HTML ######## #
sub confirm_html
{
#$first = $class;
# 第1希望と第2希望連結
if($class02 ne ''){$class = $class.'、'.$class02;}
# 文字化け変換(profile_mojibake.pl)
&mojibake;
# 郵便番号変換
$form0301 =~ s/0/0/g;
$form0301 =~ s/1/1/g;
$form0301 =~ s/2/2/g;
$form0301 =~ s/3/3/g;
$form0301 =~ s/4/4/g;
$form0301 =~ s/5/5/g;
$form0301 =~ s/6/6/g;
$form0301 =~ s/7/7/g;
$form0301 =~ s/8/8/g;
$form0301 =~ s/9/9/g;
$form0302 =~ s/0/0/g;
$form0302 =~ s/1/1/g;
$form0302 =~ s/2/2/g;
$form0302 =~ s/3/3/g;
$form0302 =~ s/4/4/g;
$form0302 =~ s/5/5/g;
$form0302 =~ s/6/6/g;
$form0302 =~ s/7/7/g;
$form0302 =~ s/8/8/g;
$form0302 =~ s/9/9/g;
# 電話番号変換
$form0501 =~ s/0/0/g;
$form0501 =~ s/1/1/g;
$form0501 =~ s/2/2/g;
$form0501 =~ s/3/3/g;
$form0501 =~ s/4/4/g;
$form0501 =~ s/5/5/g;
$form0501 =~ s/6/6/g;
$form0501 =~ s/7/7/g;
$form0501 =~ s/8/8/g;
$form0501 =~ s/9/9/g;
$form0502 =~ s/0/0/g;
$form0502 =~ s/1/1/g;
$form0502 =~ s/2/2/g;
$form0502 =~ s/3/3/g;
$form0502 =~ s/4/4/g;
$form0502 =~ s/5/5/g;
$form0502 =~ s/6/6/g;
$form0502 =~ s/7/7/g;
$form0502 =~ s/8/8/g;
$form0502 =~ s/9/9/g;
$form0503 =~ s/0/0/g;
$form0503 =~ s/1/1/g;
$form0503 =~ s/2/2/g;
$form0503 =~ s/3/3/g;
$form0503 =~ s/4/4/g;
$form0503 =~ s/5/5/g;
$form0503 =~ s/6/6/g;
$form0503 =~ s/7/7/g;
$form0503 =~ s/8/8/g;
$form0503 =~ s/9/9/g;
# 携帯電話番号変換
$form06 =~ s/−/-/g;
$form06 =~ s/0/0/g;
$form06 =~ s/1/1/g;
$form06 =~ s/2/2/g;
$form06 =~ s/3/3/g;
$form06 =~ s/4/4/g;
$form06 =~ s/5/5/g;
$form06 =~ s/6/6/g;
$form06 =~ s/7/7/g;
$form06 =~ s/8/8/g;
$form06 =~ s/9/9/g;
# ------年齢算出
#$form0701 =~ s/0/0/g;
#$form0701 =~ s/1/1/g;
#$form0701 =~ s/2/2/g;
#$form0701 =~ s/3/3/g;
#$form0701 =~ s/4/4/g;
#$form0701 =~ s/5/5/g;
#$form0701 =~ s/6/6/g;
#$form0701 =~ s/7/7/g;
#$form0701 =~ s/8/8/g;
#$form0701 =~ s/9/9/g;
$form0702b = $form0702;
$form0702b =~ s/0/0/g;
$form0702b =~ s/1/1/g;
$form0702b =~ s/2/2/g;
$form0702b =~ s/3/3/g;
$form0702b =~ s/4/4/g;
$form0702b =~ s/5/5/g;
$form0702b =~ s/6/6/g;
$form0702b =~ s/7/7/g;
$form0702b =~ s/8/8/g;
$form0702b =~ s/9/9/g;
$form0703b = $form0703;
$form0703b =~ s/0/0/g;
$form0703b =~ s/1/1/g;
$form0703b =~ s/2/2/g;
$form0703b =~ s/3/3/g;
$form0703b =~ s/4/4/g;
$form0703b =~ s/5/5/g;
$form0703b =~ s/6/6/g;
$form0703b =~ s/7/7/g;
$form0703b =~ s/8/8/g;
$form0703b =~ s/9/9/g;
$age =~ s/0/0/g;
$age =~ s/1/1/g;
$age =~ s/2/2/g;
$age =~ s/3/3/g;
$age =~ s/4/4/g;
$age =~ s/5/5/g;
$age =~ s/6/6/g;
$age =~ s/7/7/g;
$age =~ s/8/8/g;
$age =~ s/9/9/g;
#if(length($form0701) != 2) {&error("「生年月日」の「年」は西暦下2ケタ#で入力してください。");}
# 誕生月日を2桁に変換
if(length($form0702b) == 1) {$form0702c = "0".$form0702b}else{$form0702c = $form0702b}
if(length($form0703b) == 1) {$form0703c = "0".$form0703b}else{$form0703c = $form0703b}
# Eメール入力ありの場合、メルマガ希望にする
if($form09 ne '') {$email_annai = "希望する"}
# 今日の日付を取得
($second, $minute, $hour, $day, $month, $year, $wday, $yday, $isdst) = localtime;
@month = ('01','02','03','04','05','06','07','08','09','10','11','12');
$year += 1900;
$today_keisan = sprintf("%d%02d%02d", $year, $month[$month], $day);
$nengetu = $form0702c.$form0703c;
$birth_kari = int($today_keisan - ($age * 10000 + $nengetu));
if($age eq ''){$form0701 = ''}
else{$form0701 = substr($birth_kari,0,4);}
$birth = $form0701."年".$form0702."月".$form0703."日";
$birth_mail = $form0701."/".$form0702c."/".$form0703c;
# 確認用変換
$c_class = $class;
$c_first = $first;
$c_form0101 = $form0101;
$c_form0102 = $form0102;
$c_form0201 = $form0201;
$c_form0202 = $form0202;
$c_form0301 = $form0301;
$c_form0302 = $form0302;
$c_form0401 = $form0401;
$c_form0402 = $form0402;
$c_form0403 = $form0403;
$c_form0404 = $form0404;
$c_form0501 = $form0501;
$c_form0502 = $form0502;
$c_form0503 = $form0503;
$c_form06 = $form06;
$c_form0701 = $form0701;
$c_form0702 = $form0702;
$c_form0702b = $form0702b;
$c_form0702c = $form0702c;
$c_form0703 = $form0703;
$c_form0703b = $form0703b;
$c_form0703c = $form0703c;
$c_form08 = $form08;
$c_form09 = $form09;
$c_form10 = $form10;
$c_birth = $birth;
$c_birth_mail = $birth_mail;
$c_age = $age;
$c_email_annai = $email_annai;
&confirm_convert($class);
&confirm_convert($first);
&confirm_convert($form0101);
&confirm_convert($form0102);
&confirm_convert($form0201);
&confirm_convert($form0202);
&confirm_convert($form0301);
&confirm_convert($form0302);
&confirm_convert($form0401);
&confirm_convert($form0402);
&confirm_convert($form0403);
&confirm_convert($form0404);
&confirm_convert($form0501);
&confirm_convert($form0502);
&confirm_convert($form0503);
&confirm_convert($form06);
&confirm_convert($form0701);
&confirm_convert($form0702);
&confirm_convert($form0702b);
&confirm_convert($form0702c);
&confirm_convert($form0703);
&confirm_convert($form0703b);
&confirm_convert($form0703c);
&confirm_convert($form08);
&confirm_convert($form09);
&confirm_convert($form10);
&confirm_convert($birth);
&confirm_convert($birth_mail);
&confirm_convert($age);
&confirm_convert($email_annai);
&tag_convert($c_class);
&tag_convert($c_first);
&tag_convert($c_form0101);
&tag_convert($c_form0102);
&tag_convert($c_form0201);
&tag_convert($c_form0202);
&tag_convert($c_form0301);
&tag_convert($c_form0302);
&tag_convert($c_form0401);
&tag_convert($c_form0402);
&tag_convert($c_form0403);
&tag_convert($c_form0404);
&tag_convert($c_form0501);
&tag_convert($c_form0502);
&tag_convert($c_form0503);
&tag_convert($c_form06);
&tag_convert($c_form0701);
&tag_convert($c_form0702);
&tag_convert($c_form0702b);
&tag_convert($c_form0702c);
&tag_convert($c_form0703);
&tag_convert($c_form0703b);
&tag_convert($c_form0703c);
&tag_convert($c_form08);
&tag_convert($c_form09);
&tag_convert($c_form10);
&tag_convert($c_birth);
&tag_convert($c_birth_mail);
&tag_convert($c_age);
&tag_convert($c_email_annai);
$confirm_html =<< "END";
Content-type: text/html
無料案内資料請求:確認画面
END
&jcode'convert(*confirm_html, 'sjis');
print $confirm_html;
exit;
}
# ######## 利用者へのメール送信 ######## #
sub sendmail_user
{
$class2 = $class;
$class2 =~ s/、/」「/g;
# 文字化け変換(profile_mojibake.pl)
&mojibake;
# 第二希望講座を取得
$mae = substr($class,0,index($class,"、"));
$ushiro = substr($class,index($class,"、")+2,40);
if ($class =~/、/ & $mae ne $first)
{$daini = $mae;}
elsif ($class =~/、/ & $mae eq $first)
{$daini = $ushiro;}
else
{$daini = "";}
# 第1・2希望講座を変換
if ($daini eq "")
{
$first_mail = "・講座名:「$first」";
$daini_mail = "";
}
else
{
$first_mail = "・第1希望:「$first」";
$daini_mail = "・第2希望:「$daini」\n";
}
# メールのタイトル
$mail_subject = '資料請求ありがとうございました';
# メールアドレスチェック、携帯除外
# NTTドコモ
if($form09 =~/docomo/|$form09 =~/mnx.ne.jp/|$form09 =~/nttpnet.ne.jp/)
{$docomo = 'yes'}
# KDDI
if($form09 =~/ezweb/|$form09 =~/ido.ne.jp/|$form09 =~/pdx.ne.jp/)
{$kddi = 'yes'}
# Jフォン
if($form09 =~/jp-d.ne.jp/|$form09 =~/jp-h.ne.jp/|$form09 =~/jp-t.ne.jp/|$form09 =~/jp-c.ne.jp/|$form09 =~/jp-r.ne.jp/|$form09 =~/jp-k.ne.jp/|$form09 =~/jp-n.ne.jp/|$form09 =~/jp-s.ne.jp/|$form09 =~/jp-q.ne.jp/)
{$jsky = 'yes'}
# ツーカー
if($form09 =~/tu-ka.ne.jp/|$form09 =~/sky.tkk.ne.jp/|$form09 =~/sky.tkc.ne.jp/|$form09 =~/sky.dtg.ne.jp/)
{$tuka = 'yes'}
#if($docomo eq 'yes'|$kddi eq 'yes')
#{
#$mail = "#$form0201 $form0202 様
#このたびは「$first」「$daini」の資料をご請求いただき、誠にありがとうございました。
#資料は翌々日(土日除く)の発送となります。ご覧になってわからないことがございましたら、お気軽にお問い合わせ下さい。
#***************
#がくぶん総合教育センター
#東京都新宿区早稲田町5-4
#TEL:0120-004-252";
#}
#else
#{
if($age < 18|$age eq ''|($age == 18 & $form08 eq'学生'))
{
$mail = "$form0201 $form0202 様
$mailbun_miseinen1
$first_mail
$daini_mail
$mailbun_miseinen2";
}
else
{
$mail = "$form0201 $form0202 様
$mailbun_normal1
$first_mail
$daini_mail
$mailbun_normal2";
}
# 以下送信メッセージ
$mail_msg = << "END";
$mail
END
if($jcodeflag == 1)
{
&jcode'convert(*mail_subject, 'jis');
&jcode'convert(*mail_msg, 'jis');
}
if($form09 ne '' & $form09 =~ /@/ & $form09 =~ /./ & $docomo ne 'yes' & $kddi ne 'yes' & $jsky ne 'yes' & $tuka ne 'yes')
{
&sendmail($mail_to_user, $mail_from_user, $mail_subject, $mail_msg);
return;
}
else
{
}
}
# ######## 管理者へのメール送信 ######## #
sub sendmail_admin
{
# メールのタイトル
$mail_subject = '資料請求('.$ad_code.')';
# 文字列の処理
$class =~ s/、/&/g;
$mail = "$class,$first,$form0101,$form0102,$form0201,$form0202,$form0301-$form0302,$form0401,$form0402,$form0403,$form0404,$form0501-$form0502-$form0503,$form06,$form0701,$form0702c,$form0703c,$form08,$form09,$form10,$form11 $form1102,$form12 $form1202,$form13 $form1302,$form14 $form1402,$form15 $form1502,$form16,$orikomi,$email_annai";
# その他未入力の場合の空白除去
$mail =~ s/ ,/,/g;
$mail =~ s/, /,/g;
# 電話番号未入力の場合の「−」除去
$mail =~ s/-,/,/g;
$mail =~ s/,-/,/g;
# バックアップ用データ生成
# ------------------------------------------------------------------------------------------------
my @wdy_str=('日','月','火','水','木','金','土');
my ($sec,$min,$hour,$mday,$mon,$year,$wday)=localtime(time);
my $date=sprintf("%4d/%02d/%02d",$year+1900,++$mon,$mday,$wdy_str[$wday],$hour,$min);
my $hour_min=sprintf("%02d:%02d",$hour,$min);
my $date_hm = $date.' '.$hour_min;
$csv_data = $mail;
&jcode'convert(*csv_data,'euc');
$csv_data2 = $mail;
&jcode'convert(*csv_data2,'sjis');
unshift @DATA,"$csv_data\n";
unshift @DATA2,"$date_hm,$csv_data2,$ENV{'REMOTE_ADDR'},$ENV{'REMOTE_HOST'},$ENV{'HTTP_USER_AGENT'}\n";
# テキストファイル(管理者メールと同内容)
$data_file = '../../httpsdocs/form/budata/bu_data';
$file_csv = $data_file;
open( TXT, ">>$file_csv" ) or die;
flock( TXT, 2 );
print TXT "@DATA";
flock( TXT, 8 );
close( TXT );
# CSVファイル(送信日時・REMOTE_ADDRあり)
$data_file2 = '../../httpsdocs/form/budata/bu_data_c.csv';
$file_csv2 = $data_file2;
open( CSV, ">>$file_csv2" ) or die;
flock( CSV, 2 );
print CSV "@DATA2";
flock( CSV, 8 );
close( CSV );
# ------------------------------------------------------------------------------------------------
# 以下送信メッセージ
$mail_msg = << "END";
$mail
END
$class_msg = << "END";
$class
END
if($jcodeflag == 1)
{
&jcode'convert(*mail_subject, 'jis');
&jcode'convert(*mail_msg, 'jis');
&jcode'convert(*class_msg, 'jis');
}
&sendmail($mail_to_admin, $mail_from_admin, $mail_subject, $mail_msg, $mail_bcc_admin, $mail_bcc_admin2, $mail_bcc_admin3);
&sendmail($mail_to_admin_b, $mail_from_admin_b, $mail_subject, $class_msg, $mail_bcc_admin_b, $mail_bcc_admin_b2, $mail_bcc_admin_b3);
return;
}
# ######## メール送信 ######## # (引数:送信先, 送信先, タイトル, メッセージ)
sub sendmail
{
if (!open(MAIL,"| $sendmail -t")) {&error('FAILED TO MAIL');}
print MAIL "Mime-Version: 1.0\n";
print MAIL "X-Mailer:MAILER\n";
print MAIL "To: $_[0]\n";
print MAIL "Bcc: $_[4]\n";
print MAIL "Bcc: $_[5]\n";
print MAIL "Bcc: $_[6]\n";
print MAIL "From: $_[1]\n";
print MAIL "Subject: $_[2]\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "Content-type: text/plain; charset=iso-2022-jp\n";
print MAIL "$_[3]\n";
close(MAIL);
return;
}
# ######## クッキー記録 ######## #
sub save_cookie
{
$_[1] =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg;
# 保存期間の取得
($second, $minute, $hour, $day, $month, $year, $wday, $yday, $isdst) = localtime(time + $cookie_hold*24*60*60);
@wday = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
@month = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
$year += 1900;
$expires = sprintf("%s, %02d-%s-%d %02d:%02d:%02d GMT", $wday[$wday], $day, $month[$month], $year, $hour, $minute, $second);
print "Set-Cookie: $_[0]=$_[1]; expires=$expires;\n";
return;
}
# ######## クッキー取得 ######## #
sub get_cookie
{
$cookie = $ENV{'HTTP_COOKIE'};
@part = split(/; */, $cookie);
foreach $line (@part)
{
($name, $value) = split(/=/, $line);
# データのデコード
$value =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1))/eg;
$$name = $value;
}
return;
}
# ######## 全クッキー記録 ######## #
sub save_cookies
{
&save_cookie('c_form0101', "$form0101");
&save_cookie('c_form0102', "$form0102");
&save_cookie('c_form0201', "$form0201");
&save_cookie('c_form0202', "$form0202");
&save_cookie('c_form0301', "$form0301");
&save_cookie('c_form0302', "$form0302");
&save_cookie('c_form0401', "$form0401");
&save_cookie('c_form0402', "$form0402");
&save_cookie('c_form0403', "$form0403");
&save_cookie('c_form0404', "$form0404");
&save_cookie('c_form0501', "$form0501");
&save_cookie('c_form0502', "$form0502");
&save_cookie('c_form0503', "$form0503");
&save_cookie('c_form06', "$form06");
# &save_cookie('c_form0701', "$form0701");
&save_cookie('c_form0702', "$form0702");
&save_cookie('c_form0703', "$form0703");
&save_cookie('c_age', "$age");
&save_cookie('c_form08', "$form08");
&save_cookie('c_form09', "$form09");
&save_cookie('c_form10', "$form10");
# &save_cookie('c_form11', "$form11");
# &save_cookie('c_form12', "$form12");
# &save_cookie('c_form13', "$form13");
# &save_cookie('c_form14', "$form14");
# &save_cookie('c_form15', "$form15");
return;
}
# ######## ジャンプ ######## # (引数:ジャンプ先)
sub jump
{
print "Location: $_[0]\n\n";
exit;
}
# ######## 読み込みログファイルオープン######## #(引数:読み込みファイル)
sub openfile_r
{
open(FILE, "<$_[0]"); # || die &error("Can't open $_[0] file error!");
if($flockflag == 1) {flock(FILE, 2);}
@data = ;
if($flockflag == 1) {flock(FILE, 8);}
close(FILE);
$num = @data;
return @data;
}
# ######## 書き込みログファイルオープン ######## #(引数:書き込みファイル,記録データ)
sub openfile_w
{
# flockを使用
if(($flockflag == 0) || ($flockflag == 1))
{
open(FILE, ">$_[0]"); # || die &error("Can't open $_[0] file error!");
if($flockflag == 1) {flock(FILE, 2);}
shift @_;
print FILE @_;
if($flockflag == 1) {flock(FILE, 8);}
close(FILE);
}
# flockを不使用(UNIX ONLY)
elsif($flockflag == 2)
{
$tmpfile = 'temp.tmp';
foreach(1 .. 10)
{
unless(-f $tmpfile) {$tmpflag = 1; last;}
$tmpflag = 0;
sleep(1);
}
if($tmpflag)
{
$tmp_dummy = "$$\.tmp";
open(TMP, ">$tmp_dummy") || die &error("Can't create tmp file!");
close(TMP);
chmod 0666, $tmp_dummy;
open(TMP, ">$tmp_dummy") || die &error("Can't open tmp file!");
shift @_;
print TMP @_;
close(TMP);
foreach (1 .. 10)
{
if(link($tmp_dummy, $tmpfile) == 1)
{
rename($tmpfile, $_[0]);
chmod 0644, $_[0];
last;
}
sleep(1);
}
unlink $tmp_dummy;
}
}
# flockを不使用(UNIX and NT)
elsif($flockflag == 3)
{
$tmpfile = 'temp.tmp';
foreach (1 .. 10)
{
unless(-f $tmpfile) {$tmpflag = 1; last;}
$tmpflag = 0;
sleep(1);
}
if($tmpflag)
{
$tmpflag = 0;
$tmp_dummy = "$$\.tmp";
if(open(TMP,">$tmp_dummy"))
{
close(TMP);
chmod 0666, $tmp_dummy;
if(!open(TMP,">$tmp_dummy")) {&error('bad_tmpfile');}
shift @_;
print TMP @_;
close(TMP);
foreach (1 .. 10)
{
unless(-f $tmpfile)
{
if(open(TMP,">$tmpfile"))
{
shift @_;
print TMP @_;
close(TMP);
rename($tmp_dummy, $_[0]);
unlink $tmpfile;
$tmpflag = 1;
last;
}
}
sleep(1);
}
if(-f $tmp_dummy) {unlink $tmp_dummy;}
}
}
}
# リネーム、Perlのプロセスが取得できないサーバ(NT)
elsif($flockflag == 4)
{
local($tmpfile) = $_[0];
$tmpfile =~ s/(\w+)\.\w+$/$1\.temp/i;
local($flag) = 0;
foreach(1 .. 10)
{
unless(-f $tmpfile)
{
if(open(TMP,">$tmpfile"))
{
local $logfile = shift @_;
print TMP @_;
close(TMP);
if(open(TMP,">$logfile"))
{
print TMP @_;
close(TMP);
$flag = 1;
unlink $tmpfile;
last;
}
}
}
sleep(1);
}
$flag;
}
return;
}
# ######## デバッグ ######## #(引数:出力したい変数)
sub debug
{
if($debug_flag != 1) {print "Content-type: text/html\n\n";}
print "$_[0]\n\n";
$debug_flag = 1;
return;
}
# ######## error出力 ######## #(引数:メッセージ)
sub error
{
print << "END";
Content-type: text/html
error!
$_[0]
戻る
END
exit;
}
# ######## HTML出力 ######## #(引数:タイトル, メッセージ)
sub html_tag
{
$tel = "$form0501-$form0502-$form0503";
$form0201_euc = $form0201;
$form0201_euc =~ s/([^0-9A-Za-z_-])/"%" . unpack("H2H2", $1)/ge;
$form0202_euc = $form0202;
$form0202_euc =~ s/([^0-9A-Za-z_-])/"%" . unpack("H2H2", $1)/ge;
$tel_euc = "$form0501-$form0502-$form0503";
$tel_euc =~ s/([^0-9A-Za-z_-])/"%" . unpack("H2H2", $1)/ge;
#日付時間
my ($sec,$min,$hour,$mday,$mon,$year,$wday)=localtime(time);
my $date_tag=sprintf("%4d%02d%02d%02d%02d%02d",$year+1900,++$mon,$mday,$hour,$min,$sec);
print << "END";
Content-type: text/html
送信完了
この度は通信講座の無料案内書のご請求ありがとうございました。
案内書は3日前後を目安にお届けするようにいたしております。
あなた様がご受講を始められる日を、スタッフ一同楽しみにお待ちしております。
$aff_tag
*****************************************************
☆講座の修了生の様子をご覧いただけます
*****************************************************
⇒学び応援誌manabiyaのWEBページで
講座修了生のスペシャルインタビューを公開中
⇒がくぶんトップページはこちら
TOPに戻る
END
exit;
}