#!/usr/local/bin/perl #┌──────────────────────── #│ Shopping Cart - cart.cgi (2004/02/15) #│ Copyright (c) KentWeb #│ http://www.kent-web.com/ #└──────────────────────── # 外部ファイル取り込み require './init.cgi'; require $jcode; # メイン処理 &decode; if ($mode eq "note") { ¬e; } elsif ($mode eq "check") { ✓ } &menu; #------------------------------------------------- # メニュー表示 #------------------------------------------------- sub menu { local($i,$n,$next,$back); # 在庫 &stock if ($stock); &header; print <
EOM if ($t_image) { print "\"$title\"\n"; } else { print "
\n"; print "$title\n"; print "
\n"; } # 管理者メッセージ print <
$sub_msg
EOM # 検索窓 if ($find) { print "\n"; # 検索実行 if ($in{'word'} ne "") { &find; } print "
\n"; print "
\n"; print "\n"; foreach (0 .. $#key) { print "\n"; } print "\n"; print "
\n"; } # 買物受付け if ($key[0]) { &pick; } # カテゴリ表示 if ($category == 2) { &category; } if ($page eq '') { $page=0; } $gview *= $rview; print "\n"; $i=0; $n=0; open(IN,"$logfile") || &error("Open Error: $logfile"); while () { $n++; if ($n < $page + 1) { next; } if ($n > $page + $gview) { last; } if ($i >= $rview) { print ""; $i=0; } $i++; if ($category) { $span=6; } else { $span=5; } if ($stock) { $span++; } chop; ($no,$item,$price,$size,$color,$img,$memo,$w,$h,$intax,$nmb,$id,$cate,$link,$tail) = split(/<>/); if ($size) { $span++; } if ($color) { $span++; } if ($memo) { $span++; } # if (!$imgview && $tail) { $item = "$item"; } $price2 = &filler($price); if ($id eq "") { $id = $no; } print ""; } close(IN); print "
"; print "
\n"; print "\n"; print "\n"; # 注文オーダ蓄積 foreach (0 .. $#key) { print "\n"; } print "\n"; print ""; # 画像 if ($tail) { print "\n"; print "\n"; } else { print "\n"; } print "\n"; if ($category) { if ($cate eq "") { $cate = 0; } print ""; print "\n"; } print "\n"; if ($stock) { if (!defined($stock{$no})) { $stock{$no}=0; } print "\n"; } print ""; # 入力 $flag=0; $pnum = $psize = $pcol = ''; foreach (0 .. $#key) { if ($no == $key[$_]) { $flag=1; ($pnum,$psize,$pcol) = split(/:/, $val[$_]); last; } } if (!$flag) { $pnum = 0; } if ($nmb) { @nmb = split(/\s+/, $nmb); print "\n"; } else { print "\n"; } if ($size) { @size = split(/\s+/, $size); print "\n"; } if ($color) { @color = split(/\s+/, $color); print "\n"; } if ($memo) { print "\n"; } print "
商品No$id"; if ($w && $h) { $wh = "width=$w height=$h"; } if ($link) { print ""; } else { print ""; } print "\"$id\""; print "
$id
商品名$item
カテゴリ$cate[$cate]
単価\\$price2 "; if ($intax == 1) { print "(税込み)"; } else { print "(税別)"; } print "
在庫   $stock{$no}
数量
$attr1
$attr2
備考 $memo
購入"; if ($stock && $stock{$no} <= 0) { print "在庫切れ"; } else { print ""; } print "
\n"; # ページ繰越ボタン $next = $page + $gview; $back = $page - $gview; print "

\n"; if ($back >= 0) { print "\n"; } if ($next < $n) { print "\n"; } # 著作権表示(削除禁止) print <<"EOM";
\n"; print "\n"; foreach (0 .. $#key) { print "\n"; } print "
\n"; print "\n"; foreach (0 .. $#key) { print "\n"; } print "


- ShoppingCart -

EOM exit; } #------------------------------------------------- # 買物処理 #------------------------------------------------- sub pick { local($no,$order,$all1,$all2,$tax); # データ認識 undef(%pick); open(IN,"$logfile") || &error("Open Error: $logfile"); while () { ($no) = split(/<>/); $pick{$no} = $_; } close(IN); # 在庫認識 if ($stock) { &stock; } # 買い物 $order=0; foreach (0 .. $#key) { ($pnum) = split(/:/, $val[$_]); if (length($pnum) > $maxlen) { &error("注文個数は$maxlen桁までです"); } if ($pnum > 0) { $order++; } ($no,$item,$price,$size,$col,$img,$memo,$w,$h,$intax,$nmb) = split(/<>/, $pick{$key[$_]}); # 在庫数チェック if ($stock) { if ($stock{$key[$_]} < $pnum) { &error("購入個数が在庫数をオーバーしています"); } $stock{$key[$_]} -= $pnum; } $price2 = $price * $pnum; if ($intax == 1) { $in_tax += $price2; } else { $no_tax += $price2; } } # 0個の場合 if (!$order) { return; } # 小計 $all_pr2 = $in_tax + $no_tax; # $tax = int $no_tax * $pertax; # $all_pr3 = $all_pr2 + $tax; # $tax = &filler($tax); $all_pr2 = &filler($all_pr2); # $all_pr3 = &filler($all_pr3); print "
\n"; # 注文オーダ蓄積 foreach (0 .. $#key) { print "\n"; } # 合計金額表示 print <
小計 \\$all_pr2

EOM } #------------------------------------------------- # 検索実行 #------------------------------------------------- sub find { local($cols,$i,$flag,$wd,$no,$item,$price,$size,$col,$img,$memo,$w,$h,$intax,$nmb,$id,$cate,$link,$tail,$zei,@wd); # 戻りボタン print <

EOM foreach (0 .. $#key) { print "\n"; } print < EOM # 買物受付け if ($key[0]) { &pick; } # 入力内容を整理 $in{'word'} =~ s/ / /g; @wd = split(/\s+/, $in{'word'}); # リスト print < EOM $cols = 6; if ($stock) { print ""; $cols++; } print <情報 EOM # 検索 $i=0; open(IN,"$logfile") || &error("Open Error: $logfile"); while () { chop; ($no,$item,$price,$size,$col,$img,$memo,$w,$h,$intax,$nmb,$id,$cate,$link,$tail) = split(/<>/); $flag=0; foreach $wd (@wd) { if (index("$item$memo",$wd) >= 0) { $i++; if ($i % 2) { $line=$lin1; } else { $line=$lin2; } $price = &filler($price); print ""; print "\n"; print "\n"; print "\n"; foreach (0 .. $#key) { print "\n"; } if ($intax == 1) { $zei="税込み"; } else { $zei="税別"; } if ($id eq "") { $id = $no; } print ""; print ""; if ($stock) { if (!defined($stock{$no})) { $stock{$no}=0; } print ""; } print "\n"; } } } close(IN); # ヒットなし if (!$i) { print "\n"; } print < EOM exit; } #------------------------------------------------- # カテゴリ表示 #------------------------------------------------- sub category { local($next,$back); # カテゴリメニュー if ($in{'view'} eq "") { print < ▼最初にカテゴリーをお選びください。

商品No 商品名 単価在庫数量 購入
$id$item"; if ($tail) { print "

"; if ($w && $h) { $w /= 4; $h /= 4; $wh="width=$w height=$h"; } if ($link) { print ""; } else { print ""; } print ""; } print "

"; print "\\$price ($zei)$stock{$no}"; if ($size) { @size = split(/\s+/, $size); print "($attr1)

\n"; } if ($col) { @col = split(/\s+/, $col); print "($attr2)

\n"; } print "(備考)
$memo
"; if ($nmb) { @nmb = split(/\s+/, $nmb); print "\n"; } else { print ""; } print ""; if ($stock && $stock{$no} <= 0) { print "在庫切れ"; } else { print ""; } print "
該当なし
EOM $i=0; $f=0; $j=0; open(IN,"$logfile") || &error("Open Error: $logfile"); while () { ($no,$item,$price,$size,$col,$img,$memo,$w,$h,$intax,$nmb,$id,$cate,$link) = split(/<>/); if ($cate2 ne $cate) { if ($f) { $f=0; print "\n"; $i=0; } $f=1; print ""; print ""; $j++; } $cate2 = $cate; $i++; } close(IN); if ($f) { print "\n"; } # 著作権表示(削除改編禁止) print <

- ShoppingCart - EOM exit; # カテゴリの中身を表示 } else { # 在庫 &stock if ($stock); print <
内容閲覧 カテゴリー 商品数
$i
\n"; foreach (0 .. $#key) { print "\n"; } print "
"; if (@cateImg > 0) { print ""; } print "$cate[$cate]
$i
$cate[$in{'view'}]
EOM foreach (0 .. $#key) { print "\n"; } print <
EOM if ($stock) { print ""; } print <情報 EOM $k=0; open(IN,"$logfile") || &error("Open Error: $logfile"); while () { ($no,$item,$price,$size,$col,$img,$memo,$w,$h,$intax,$nmb,$id,$cate,$link,$tail) = split(/<>/); next if ($in{'view'} != $cate); $k++; if ($k < $page + 1) { next; } if ($k > $page + $pageView) { next; } $i++; if ($intax == 1) { $zei="税込み"; } else { $zei="税別"; } if ($id eq "") { $id = $no; } $price = &filler($price); print "
\n"; print "\n"; print "\n"; foreach (0 .. $#key) { print "\n"; } print "
"; if ($stock) { if (!defined($stock{$no})) { $stock{$no}=0; } print ""; } print "\n"; } close(IN); print "
商品No 商品 単価在庫数量 購入
$id$item"; # 画像 if ($tail) { print "

"; if ($w && $h) { $wh="width=$w height=$h"; } if ($link) { print ""; } else { print ""; } print "\"$item\""; } print "

"; print "\\$price ($zei)$stock{$no}"; if ($size) { @size = split(/\s+/, $size); print "($attr1)


\n"; } else { print " "; } if ($col) { @col = split(/\s+/, $col); print "($attr2)


\n"; } else { print " "; } if ($memo eq "" && $link eq "") { $memo="
"; } else { print "(備考)
"; } print "$memo
"; if ($nmb) { @nmb = split(/\s+/, $nmb); print "\n"; } else { print ""; } print ""; if ($stock && $stock{$no} <= 0) { print "在庫切れ"; } else { print ""; } print "
\n"; } ## $next = $page + $pageView; $back = $page - $pageView; print "

\n"; if ($back >= 0) { print "\n"; } if ($next < $k) { print "\n"; } print < EOM exit; } #------------------------------------------------- # チェックモード #------------------------------------------------- sub check { &header; print <Check Mode
    EOM foreach ( $logfile, $ordfile, $stkfile ) { if (-e $_) { print "
  • $_のパスOK\n"; } else { print "
  • $_のパスNG\n"; } if (-r $_ && -w $_) { print "
  • $_のパーミッションOK\n"; } else { print "
  • $_のパーミッションNG\n"; } } # ロックディレクトリ print "
  • ロック形式:"; if ($lockkey == 0) { print "ロック設定なし\n"; } elsif ($lockkey == 1) { print "symlink\n"; } else { print "mkdir\n"; } local($lockdir) = $lockfile =~ /(.*)[\\\/].*$/; # ディレクトリチェック foreach ( $lockdir, $imgdir ) { print "
  • ディレクトリ名 → $_\n"; if (-d $_) { print "
  • $_のパス:OK\n"; if (-r $_ && -w $_ && -x $_) { print "
  • $_のパーミッション:OK\n"; } else { print "
  • $_のパーミッション:NG → $_\n"; } } else { print "
  • $_のパス:NG → $_\n"; } } # 送信方式 if ($ordertype == 1) { print "
  • 注文方式:メール送信\n"; # sendmailチェック if (-e $sendmail) { print "
  • sendmailパス:OK!\n"; } else { print "
  • sendmailパス:NG → $sendmail\n"; } } else { print "
  • 注文方式:ログ蓄積\n"; } # jcode.pl バージョンチェック print "
  • jcode.plバージョンチェック:"; open(IN, $jcode); while () { if (/jcode\.pl\,v (\d)\.(\d+)/) { $v1=$1; $v2=$2; $flag=1; last; } } close(IN); if ($v1 < 2 || $v2 < 13) { print "バージョンが低いようです。→ $v1.$v2\n"; } else { print "バージョンOK (v $v1.$v2)\n"; } print <バージョン : $ver
EOM exit; } __END__
\n"; print "\n"; foreach (0 .. $#key) { print "\n"; } print "\n"; print "
\n"; print "\n"; foreach (0 .. $#key) { print "\n"; } print "\n"; print "