#!/usr/local/bin/perl require './jcode.pl'; require './init.cgi'; require './subr1.cgi'; require './cookie.cgi'; ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); @wday_array = ('SUN','MON','TUE','WED','THU','FRI','SAT'); $date_now = sprintf("%04d/%02d/%02d\-%s\-%02d:%02d:%02d",$year +1900,$mon +1,$mday,$wday_array[$wday],$hour,$min,$sec); &getData($basefile); # cgi_url,cgi_ssl,htdocs_url,cookie_path,home_url &getData($infoFile); # sign,main,mid,end,tokushoho,info2 $main = &tag_ok($dat{'main'}); $head = &tag_ok($dat{'head'}); $mid = &tag_ok($dat{'mid'}); $foot = &tag_ok($dat{'end'}); &getData($colorFile); # panel,gamen1〜4{bgcolor,textcolor,linkcolor,barbgcolor,bartextcolor} &getData($shippingFile); # regName,regCode,yen,keta,tax,zei,titleBar,shipping,shippingFreeGoukei,Goukei,shippingFreeGoukei_type,shippingFreeKosuu,Kosuu,SentakuName0〜4,addShipName,addShipValue $in{'keta'} = $dat{'keta'}; &getData($emailFile); # email,emailj if (-e $zeusFile) { &getData($zeusFile); } # zeus,zeusIP,bitType,cgiType,payType,zeusMIN if (-e $ginixFile) { &getData($ginixFile); } # ginix,aid,kType #-------------------------------------- opendir(DIR,$tmp_dir); # 掃除 @lists = readdir(DIR); close(DIR); foreach $file (@lists) { next if $file eq '.'; next if $file eq '..'; next if $file eq 'LOGO'; next if $file eq 'logoType'; next if -d $file; $mod = -M "$tmp_dir$file"; if ($mod > 7) { unlink "$tmp_dir$file"; } } opendir(DIR,$users_dir); # 掃除 @lists = readdir(DIR); close(DIR); foreach $file (@lists) { next if $file eq '.'; next if $file eq '..'; $mod = -M "$users_dir$file"; if ($mod > 30) { unlink "$users_dir$file"; } } #-------------------------------------- read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); if ($ENV{'QUERY_STRING'} ne '') { $buffer .= "\&$ENV{'QUERY_STRING'}"; } @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name,$value) = split(/=/,$pair); $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; &jcode'convert(*name,'sjis'); &jcode'convert(*value,'sjis'); $value =~ s/&/&/g; $value =~ s/"/"/g; $value =~ s//>/g; $value =~ s/\t//g; $value =~ s/\r\n/\n/g; # Win → Unix $value =~ s/\r/\n/g; # Mac → Unix $value =~ s/\f//g; $value =~ s/\t//g; if ($name =~ /;(\d+);/) { $in{'cmd'} = "DEL"; $delcode = $1; last; } elsif ($name =~ /;ALL;/) { $in{'cmd'} = "DELALL"; last; } $in{$name} .= "\0" if (defined($in{$name})); $in{$name} .= $value; push(@in,"$name\0$value"); } # カートの特定 $CARTCODE = &decCookie("CART"); if ($in{'cart'} ne "") { $CARTCODE = $in{'cart'}; } elsif ($CARTCODE eq "0") { $CARTCODE = &MakeStr(12); if (-e "$tmp_dir$CARTCODE") { &Die("BUSY","戻ってもう一度実行してください。"); } &setCookie("CART",$CARTCODE,30); } if ($in{'cmd'} eq "DEL") { if (open(RID,"$tmp_dir$CARTCODE")) { @BASE = ; close(RID); } @NEW = grep(!/^$delcode\t\t/,@BASE); if (open(RID,"> $tmp_dir$CARTCODE")) { print RID @NEW; close(RID); chmod(0666,"$tmp_dir$CARTCODE"); } else { &Die("異常終了"); } print "Location: $dat{'cgi_url'}cart.cgi\n\n"; exit; } elsif ($in{'cmd'} eq "DELALL") { unlink("$tmp_dir$CARTCODE"); print "Location: $dat{'cgi_url'}cart.cgi\n\n"; exit; } elsif ($in{'cmd'} eq "selship") { require './cart1.cgi'; &readCart; if ($in{'ship'} eq "") { &Die("エラー","送料の選択をしてください。"); } print &HtmlTop("bgcolor=#FFFFFF"); &ViewLogo; # ロゴ表示 print "
\n"; &cartList(0); # 1=DELボタン付 print "
\n"; &inputName; print &HtmlBot; } elsif ($in{'cmd'} eq "Order") { if ($in{'CHECK'} eq "") { &Die("エラー","申\込みされる場合は、意志確認のため、「申\込みする」ボタンを押してください。"); } if ($in{'pwd'} ne "") { if (crypt($in{'passwd'},$in{'pwd'}) ne $in{'pwd'} || $in{'passwd'} eq "") { &Die("エラー","パスワードが合いません。"); } } require './cart1.cgi'; &readCart; @YEAR = ("","A".."Z"); $order_date = sprintf("%01s%02d%02d",$YEAR[$year -100],$mon +1,$mday); open(TMP,">> $tmp_dir$order_date"); print TMP "\n"; close(TMP); chmod(0666,"$tmp_dir$order_date"); $order_num = $order_date . "-" . -s "$tmp_dir$order_date"; unlink("$tmp_dir$CARTCODE"); print &HtmlTop("bgcolor=#FFFFFF"); print "\n\n"; print "\n"; if ($dat{'regName'} ne "" && $dat{'regCode'} ne "") { $mes = "お申\し込みありがとうございます"; } else { $mes = "試用中 ... これはテスト注文です"; } print "\n"; print "\n"; print "\n"; print "\n"; print "
\n"; &ViewLogo; # ロゴ表示 print "
\n"; &cartList(0); # 1=DELボタン付 print " \n"; &confirm2; print "

 $mes
\n"; print "受付番号は $order_num です。この画面をメモまたはプリントしてください。
\n"; print "$in{'Email'}宛てに控えを送信しましたが、届かない場合は記入ミスの場合があります。
\n"; print "数日経過しても連絡がない場合は、お手数ですがご連絡ください。\n"; if ($in{'CARD'} eq "1") { if ($dat{'zeus'}) { $cType[0] = "mall"; $cTypeName[0] = "日本円"; $money[0] = $cost_all; $cType[1] = "cardsv"; $cTypeName[1] = "米ドル"; ($cost_all3,$cost_all4) = &ketaCheck($cost_all); $cost_all4 =~ s/\,//g; $money[1] = "\$$cost_all4"; $Tel = $in{'Tel'}; $Tel =~ s/\D//g; print <<"EOF";

クレジットカードでのご決済を選択されました。 下のボタンを押して、決済へお進みいただけます。

$cTypeName[$dat{'payType'}]決済/暗号強度$bitName[$dat{'bitType'}]ビット
ご決済額 $cost_all2 $dat{'yen'}
EOF } elsif ($dat{'ginix'}) { $shokei += 0; $tax += 0; if ($in{'shipfree'} eq "1") { $shipFee = 0; } print <<"EOF";

クレジットカードでのご決済を選択されました。 下のボタンを押して、決済へお進みいただけます。

カード決済
ご決済額 $cost_all2 $dat{'yen'}
EOF } } print "

[ ホームページ ]
$foot

\n"; print &HtmlBot; &sendmail; } elsif ($in{'cmd'} eq "nameReg") { require './cart1.cgi'; &readCart; $hint = ""; if ($in{'Name'} eq "") { push(@ERR,"$hint
 お申\込者 お名前を記入してください。
"); } if ($in{'Post'} eq "") { push(@ERR,"$hint郵便番号を記入してください。"); } if ($in{'Addr2'} eq "") { push(@ERR,"$hintご住所を記入してください。"); } if ($in{'Tel'} eq "") { push(@ERR,"$hintご連絡先電話番号を記入してください。"); } unless ($in{'Email'} =~ /\b[-\w.]+@[-\w.]+\.[-\w]+\b/) { push(@ERR,"$hintメールアドレスを正しくご記入ください。"); } if (!$in{'Hasso'}) { $hint = ""; if ($in{'hName'} eq "") { push(@ERR,"$hint
 ご発送先 お名前を記入してください。
"); } if ($in{'hPost'} eq "") { push(@ERR,"$hint郵便番号を記入してください。"); } if ($in{'hAddr2'} eq "") { push(@ERR,"$hintご住所を記入してください。"); } if ($in{'hTel'} eq "") { push(@ERR,"$hintご連絡先電話番号を記入してください。"); } } if ($in{'Memo'}) { $hint = ""; if (length($in{'passwd'}) < 6 || length($in{'passwd'}) > 8 || $in{'passwd'} =~ /\W/) { push(@ERR,"$hint
 メモリーサービス パスワードを6〜8文字の半角英数字でご記入ください。
"); } &TestCrypt; $pwd = &MakeCrypt($in{'passwd'}); } if (@ERR) { &Die("ご記入ミスがあります",@ERR); } print &HtmlTop("bgcolor=#FFFFFF"); print "\n
\n"; &ViewLogo; # ロゴ表示 print "
\n"; &cartList(0); # 1=DELボタン付 print " \n"; &confirm; print "
\n"; print &HtmlBot; } elsif ($buffer eq '') { require './cart1.cgi'; &readCart; print &HtmlTop("bgcolor=#FFFFFF"); print "

\n"; &ViewLogo; # ロゴ表示 &cartList(1); # 1=DELボタン付 print "
\n"; &selectShippng; print &HtmlBot; } else { # 商品追加 $gname = "$in{'gname'}\t"; foreach $line (@in) { ($key,$val) = split(/\0/,$line,2); if ($key ne "category" && $key ne "file" && $key ne "gname" && $key ne "unit" && $key ne "qty") { $gname .= " ($key)$in{$key}"; } } if ($in{'qty'} == 0) { $in{'qty'} = 1; } if (open(RID,">> $tmp_dir$CARTCODE")) { $time = time; print RID "$time\t\t$in{'category'}\t\t$in{'file'}\t\t$gname\t\t$in{'unit'}\t\t$in{'qty'}\n"; close(RID); chmod(0666,"$tmp_dir$CARTCODE"); } else { &Die("異常終了"); } print "Location: $dat{'cgi_url'}cart.cgi\n\n"; exit; } sub ViewLogo { if (-e "$tmp_dir$logofile") { if (open(F,"$tmp_dir$logoType")) { $ctype = ; close(F); } print "
\"\"

\n"; } } sub cartList { local($DEL) = @_; $in{'keta'} = $dat{'keta'}; # ketaCheck用 if ($dat{'regName'} ne "" && $dat{'regCode'} ne "") { print "\n\n"; } else { print "\n\n"; } print <<"EOF"; EOF if ($DEL) { print "

\n"; } print <<"EOF";
EOF if ($DEL) { print <<"EOF"; EOF } print <<"EOF"; EOF $f = 0; $f2 = $page; @col = ("#f8f8f8","#ffffff"); foreach $line (@BASE) { ($delcode,$category,$file,$gname,$unit,$qty) = split(/\t\t/,$line,6); if ($DEL) { if ($gname =~ /(.+)\t(.+)/) { $gname = "$1
$2"; } else { $gname = "$gname"; } } else { if ($gname =~ /(.+)\t(.+)/) { if ($in{'cmd'} eq "Order") { $ORDER .= "$1\n$2\n"; $LIST .="[品名]:$1 $2"; } # ● $gname = "$1
$2"; } else { if ($in{'cmd'} eq "Order") { $ORDER .= "$gname\n"; $LIST .="[品名]:$gname"; } # ● $gname = "$gname"; } } $cost = $unit * $qty; $qty_all += $qty; $cost_all += $cost; ($unit,$unit2) = &ketaCheck($unit); $qty2 = &keta($qty); ($cost,$cost2) = &ketaCheck($cost); $qty_all2 = &keta($qty_all); ($cost_all,$cost_all2) = &ketaCheck($cost_all); $col++; $bgcolor = "bgcolor=$col[$col % 2]"; if ($in{'cmd'} eq "Order") { $ORDER .= "@$unit2 x $qty2点 = $cost2 $dat{'yen'}\n\n"; $LIST .=" (単価):$unit2 (数量):$qty2 (小計):$cost2\n"; } # ● print ""; print "\n"; print "\n"; print "\n"; print "\n"; if ($DEL) { print "\n"; } print ""; } if ($in{'cmd'} eq "Order") { $ORDER2 .= "商品点数\0$qty_all2\n\n"; $LIST .="[商品点数]:$qty_all2\n"; } # ● if ($DEL) { $colspan=5; } else { $colspan=4; } print ""; print ""; print ""; if ($dat{'zei'} eq "0") { # 税別 print ""; print "\n"; print "\n"; print "\n"; print "\n"; if ($DEL) { print "\n"; } print ""; $shokei = $cost_all2; ($shokei,$shokei2) = &ketaCheck($shokei); if ($in{'cmd'} eq "Order") { $ORDER2 .= "小計\0$shokei2 $dat{'yen'}\n"; $LIST .="[商品合計]:$shokei2\n"; } # ● $tax = $cost_all * ($dat{'tax'}/100); ($tax,$tax2) = &ketaCheck($tax); if ($in{'cmd'} eq "Order") { $ORDER2 .= "消費税\0$tax2 $dat{'yen'}\n"; $LIST .="[消費税]:$tax2\n"; } # ● $cost_all += $tax; ($cost_all,$cost_all2) = &ketaCheck($cost_all); print ""; print "\n"; print "\n"; print "\n"; print "\n"; if ($DEL) { print "\n"; } print ""; } else { # 消費税の計算をしない $shokei = $cost_all2; ($shokei,$shokei2) = &ketaCheck($shokei); $tax = 0; if ($in{'cmd'} ne "") { print ""; print "\n"; print "\n"; print "\n"; print "\n"; print ""; } if ($in{'cmd'} eq "Order") { $ORDER2 .= "小計\0$cost_all2 $dat{'yen'}\n"; $LIST .="[商品合計]:$cost_all2\n"; } # ● if ($DEL) { $mes2 = "\n"; } } if ($in{'cmd'} eq "selship" || ($in{'ship'} ne "" && $in{'ship'} ne "-")) { &insertShip; } if ($in{'cmd'} eq "Order") { $ORDER2 .= "合計\0$cost_all2 $dat{'yen'}\n"; $ORDER2 .= "=========\0==============\n"; $LIST .="[支払合計]:$cost_all2\n"; } # ● print ""; print "\n"; print "\n"; print "\n"; if ($DEL) { print "\n"; } print ""; if ($dat{'zei'} eq "1") { # 総額表示(内税)用 $nuki = &UchiZei($cost_all); $nuki2 = &keta($nuki); print ""; print "\n"; print "\n"; if ($DEL) { print "\n"; } print ""; if ($in{'cmd'} eq "Order") { $ORDER2 .= "内消費税\0($nuki2 $dat{'yen'})\n"; $LIST .="[内消費税]:$nuki2\n"; } # ● } print <<"EOF";
商 品 単 価 数 量 金 額 ($dat{'yen'})削 除
$gname$unit2$qty2$cost2
小計$cost_all2
消費税$tax2
小計$cost_all2
 $qty_all2$cost_all2$mes2
  内消費税 $nuki2
EOF if ($DEL) { print "
\n"; } } sub readCart { # カートの内容 if (open(RID,"$tmp_dir$CARTCODE")) { while() { s/\n//g; push(@BASE,$_); } close(RID); } if (!@BASE) { &Die("買物カゴは空です","商品一覧へもどる"); } } sub error { local (@msg) = @_; local ($i); print &HtmlTop("bgcolor=#FFFFFF"); print <<"EOF";

  $msg[0] 

EOF print "
    \n"; foreach $i (1 .. $#msg) { print "
  • $msg[$i]\n"; } print "

\n"; if ($in{'cmd'} eq "memory") { print <<"EOF"; [ 商品情報へ ] EOF } else { print <<"EOF"; [ もどる ] EOF } print <<"EOF";

EOF print &HtmlBot; exit; } sub jis { local($msg) = @_; &jcode'convert(*msg,'jis'); return $msg; }