KENT-WEB サポートコーナー 過去ログ [ 0166 ]


記事No: 5261
投稿日: 2009/01/09(Fri) 15:42:46
タイトルminicartの金額が計算されません。
ID情報: treev
投稿者: treev
URLhttp://www.sawako.info/health-mini/minicart/minicart.cgi

BAL様、昨日はありがとうございました。
大変助かりました。

それで、頑張ってはいるんですが、今度は金額部分が計算されなくなってしまいました。

何処がおかしいのかもわからなくて、またこの掲示板までやってきてしまいました。

どなたか、教えて頂けないでしょうか。
初歩的な質問で申し訳ありません。


#!/usr/local/bin/perl

#┌─────────────────────────────────
#│ minicart.cgi - 2006/12/22
#│ Copyright (c) KentWeb
#│ webmaster@kent-web.com
#│ http://www.kent-web.com/
#└─────────────────────────────────

# 外部ファイル
require './init.cgi';

&decode;
if ($in{'raw_view'}) { &raw_view; }
elsif ($mode eq "cart") { &cart; }
elsif ($mode eq "addr") { &addr; }
elsif ($mode eq "addr2") { &addr2; }
elsif ($mode eq "conf") { &conf; }
elsif ($mode eq "send") { &send; }
elsif ($mode eq "check") { ✓ }
&list;

#---------------------------------------
# リスト一覧
#---------------------------------------
sub list {
if ($cate_key && $in{'cate'} eq '') {
local($flg) = 0;
foreach ( keys(%cate) ) {
if (defined($in{"cate$_"})) {
$flg++;
$in{'cate'} = $_;
last;
}
}
if (!$flg) { &cate_disp; }
}

&header;
print <<EOM;
$title
<form action="$script" method="post">
EOM

# カテゴリ初期画面
if ($cate_key) {
print "<input type=\"hidden\" name=\"cate\" value=\"$in{'cate'}\"><br>\n";
print "分類:<font color=\"$pt_col\">$cate{$in{'cate'}}</font>\n";
}

$i = 0;
open(IN,"$logfile") || &error("Open Err");
while (<IN>) {
s/\n//g;
local($no,$cate,$code,$nam,$price,$num,$size,$col,$ex,$memo) = split(/<>/);

# ジャンル分け
next if ($cate_key && $in{'cate'} != $cate);

$i++;
next if ($i < $page + 1);
next if ($i > $page + $pagelog);

$price = &comma($price);

print "<hr><font color=\"$pt_col\">$nam</font><br>";

# 画像
if ($ex) {
print "<a href=\"$imgurl/$no$ex\">写真</a><br>";
}

print "$code<br>$price円<br>数量\n";
if ($num) {
print "<select name=\"num$no\">\n";
foreach $i (1 .. $num) {
print "<option value=\"$i\">$i\n";
}
print "</select>\n";
} else {
print "<input type=\"text\" name=\"num$no\" value=\"1\" size=\"2\" istyle=\"4\">\n";
}

print "<br>";
if ($size) {
print "$opt_1 <select name=\"size$no\">\n";

@size = split(/,/, $size);
foreach $i (0 .. $#size) {
print "<option value=\"$i\">$size[$i]\n";
}
print "</select><br>\n";
}
if ($col) {
print "$opt_2 <select name=\"col$no\">\n";

@col = split(/,/, $col);
foreach $i (0 .. $#col) {
print "<option value=\"$i\">$col[$i]\n";
}
print "</select><br>\n";
}
if ($memo) {
print "<p>商品説明</p>
<p>$memo</p><br>\n";
}
print "<input type=\"submit\" name=\"cart$no\" value=\"購入\">\n";
}
close(IN);

print "<hr>";

if ($in{'cart'}) {
foreach ( split(/\0/, $in{'cart'}) ) {
print "<input type=\"hidden\" name=\"cart\" value=\"$_\">\n";
}
}

# ページ繰り越し
local($next) = $page + $pagelog;
local($back) = $page - $pagelog;

local($flg);
if ($back >= 0) {
$flg = 1;
print "<input type=\"submit\" name=\"page$back\" value=\"前頁\">\n";
}
if ($next < $i) {
$flg = 1;
print "<input type=\"submit\" name=\"page$next\" value=\"次頁\">\n";
}
if ($flg) { print "<br>"; }

print <<EOM;
<input type="hidden" name="mode" value="cart">
<input type="submit" name="cart_view" value="カゴ中身">
EOM

if ($cate_key) {
print "<br><input type=\"submit\" name=\"top_back\" value=\"トップ戻る\">\n";
}

print <<EOM;
<hr><input type="submit" name="raw_view" value="見る">
特定商取引法による表\示
</form>
[9]<a href="$backurl" accesskey="9">ホーム戻る</a><hr>
<div align="right">
<a href="http://www.kent-web.com/i/">MiniCart</a>
</div>
</body></html>
EOM

exit;
}

#---------------------------------------
# カテゴリ初期画面
#---------------------------------------
sub cate_disp {
&header;
print <<EOM;
<form action="$script" method="post">
$title<hr>カテゴリーを選択してください.<br>
EOM

foreach ( sort{ $a <=> $b }(keys(%cate)) ) {
print "<input type=\"submit\" name=\"cate$_\" value=\"選\">\n";
print "$cate{$_}<br>\n";
}
if ($in{'cart'}) {
foreach ( split(/\0/, $in{'cart'}) ) {
print "<input type=\"hidden\" name=\"cart\" value=\"$_\">\n";
}
}

print <<EOM;
<hr>[9]<a href="$backurl" accesskey="9">ホーム戻る</a>
</form><hr>
<div align="right">
<a href="http://www.kent-web.com/i/">MiniCart</a>
</div>
</body></html>
EOM
exit;
}

#---------------------------------------
# 購入
#---------------------------------------
sub cart {
local($flg,@cart);

# その他処理
if ($in{'back'}) { &list; }
elsif ($in{'next'}) { &input_paym; }
elsif ($in{'top_back'}) { &cate_disp; }

if (!$cart_data && !$dele_data && !$in{'cart_view'}) {
if ($page ne '') { &list; }
else { &error("不正な処理です"); }
}

# カゴ展開
$flg = 0;
foreach ( split(/\0/, $in{'cart'}) ) {
local($no,$num,$size,$col) = split(/,/);

# カゴ追加で既に同一要素がある場合は、数量をアップ
if ($cart_data && $no == $cart_data && $in{"size$cart_data"} eq $size && $in{"col$cart_data"} eq $col ) {
$flg++;
$num += $in{"num$cart_data"};
$_ = "$cart_data,$num,$in{\"size$cart_data\"},$in{\"col$cart_data\"}";
}
push(@cart,$_);
}

# カゴの中身に追加
if ($cart_data && !$flg) {
unshift(@cart,"$cart_data,$in{\"num$cart_data\"},$in{\"size$cart_data\"},$in{\"col$cart_data\"}");
}

# データ項目認識
local(%name,%code,%size,%col,%pri,%memo);
open(IN,"$logfile") || &error("Open Err");
while (<IN>) {
local($no,$cate,$code,$nam,$price,$num,$size,$col,$memo) = split(/<>/);

$name{$no} = $nam;
$code{$no} = $code;
$size{$no} = $size;
$col{$no} = $col;
$pri{$no} = $price;
$memo{$no} = $memo;
}
close(IN);

# 画面表示
&header;
print <<EOM;
買物カゴ中身
<form action="$script" method="post">
<input type="hidden" name="mode" value="cart">
EOM

if ($cate_key) {
print "<input type=\"hidden\" name=\"cate\" value=\"$in{'cate'}\"><br>\n";
}

# カゴ中身展開
$all = 0;
foreach (@cart) {
local($no,$num,$size,$col) = split(/,/);

# 削除のとき
next if ($dele_data && $dele_data == $no);

# 金額
$kei = $pri{$no} * $num;
$all += $kei;
$kei = &comma($kei);

print "<input type=\"hidden\" name=\"cart\" value=\"$no,$num,$size,$col\">\n";
print "<hr>$name{$no}<br>$code{$no}<br>$kei円<br>数:$num<br>\n";

if ($size ne "") {
@size = split(/,/, $size{$no});
print "$opt_1:$size[$size]<br>\n";
}
if ($col ne "") {
@col = split(/,/, $col{$no});
print "$opt_2:$col[$col]<br>\n";
}

print "<input type=\"submit\" name=\"dele$no\" value=\"取消\">\n";
}

# コンマ付加
$all_c = &comma($all);

# フッタ画面
print "<hr>計 $all_c円<hr>\n";

if ($all > 0) {
print "<input type=\"submit\" name=\"next\" value=\"購入画面\"><br>\n";
}

print <<EOM;
<input type="submit" name="back" value="買物継続"></form>
</body></html>
EOM
exit;
}

#---------------------------------------
# 支払方法画面
#---------------------------------------
sub input_paym {
&header;
print <<EOM;
<form action="$script" method="post">
<input type="hidden" name="mode" value="addr">
<hr>支払方法<br>
EOM

local($i)=0;
foreach (0 .. $#payment) {
$i++;
($val) = split(/,/, $payment[$_]);

if ($i == 1) {
print "<input type=radio name=payment value=\"$_\" checked>$val<br>\n";
} else {
print "<input type=radio name=payment value=\"$_\">$val<br>\n";
}
}

print <<EOM;

EOM

foreach (0 .. $#deli) {
print "<option value=\"$_\">$deli[$_]<br>\n";
}

print "</select><hr>\n";

if ($in{'cart'}) {
foreach ( split(/\0/, $in{'cart'}) ) {
print "<input type=\"hidden\" name=\"cart\" value=\"$_\">\n";
}
}

print <<EOM;
<input type="submit" value="次画面"></form>
</body></html>
EOM
exit;
}

#---------------------------------------
# 住所入力画面
#---------------------------------------
sub addr {
local($err) = @_;

&header;
print "連絡先入力<hr>\n";

# エラー時
if ($err) {
print "<font color=\"$err_col\">入力エラーがあります.</font>\n";
}

print <<EOM;
<form action="$script" method="post">
<input type="hidden" name="mode" value="conf">
<input type="hidden" name="payment" value="$in{'payment'}">
<input type="hidden" name="mon" value="$in{'mon'}">
<input type="hidden" name="day" value="$in{'day'}">
<input type="hidden" name="deli" value="$in{'deli'}">
名前
EOM

if ($err{'name'}) {
print "<font color=\"$err_col\">入力エラー</font>\n";
}

print <<EOM;
<br><input type="text" name="name" value="$in{'name'}" size="6" istyle="1"><br>
EOM

if ($zeus_serv && $in{'payment'} == $#payment) {

print "クレジットカード記載の英字氏名\n";

if ($err{'usrname'}) {
print "<font color=\"$err_col\">入力エラー</font>\n";
}

print "<br><input type=\"text\" name=\"usrname\" value=\"$in{'usrname'}\" size=\"6\" istyle=\"3\"><br>\n";
}

print "e-mail\n";

if ($err{'email'}) {
print "<font color=\"$err_col\">入力不正</font>\n";
}

print <<EOM;
<br><input type="text" name="email" value="$in{'email'}" size="6" istyle="3"><br>
EOM

if ($zeus_serv && $in{'payment'} == $#payment) {
print "携帯電話番号\n";
} else {
print "電話\n";
}

if ($err{'tel'}) {
print "<font color=\"$err_col\">入力エラー</font>\n";
}

print <<EOM;
<br><input type="text" name="tel" value="$in{'tel'}" size="6" istyle="4"><br>

EOM

if ($err{'zip'}) {
print "<font color=\"$err_col\">入力エラー</font>\n";
}

print <<EOM;
<br><input type="text" name="zip" value="$in{'zip'}" size="6" istyle="4"><br>
住所
EOM

if ($err{'pref'} || $err{'addr'}) {
print "<font color=\"$err_col\">入力エラー</font>\n";
}

print <<EOM;
<br><select name="pref">
<option value="">▼都道府県
EOM

foreach (0 .. $#pref) {
($pref) = split(/,/, $pref[$_]);

if ($in{'pref'} eq $_) {
print "<option value=\"$_\" selected>$pref\n";
} else {
print "<option value=\"$_\">$pref\n";
}
}

print <<EOM;
</select><br>
<textarea name="addr" cols="10" rows="2" istyle="1">$in{'addr'}</textarea><br>
EOM

foreach ( split(/\0/, $in{'cart'}) ) {
print "<input type=\"hidden\" name=\"cart\" value=\"$_\">\n";
}

print "<hr>";

local(@haiso) = ('配送先は上記住所','配送先は別の住所');
foreach (0,1) {
if ($in{'haiso'} == $_) {
print "<input type=\"radio\" name=\"haiso\" value=\"$_\" checked>$haiso[$_]<br>\n";
} else {
print "<input type=\"radio\" name=\"haiso\" value=\"$_\">$haiso[$_]<br>\n";
}
}

print <<EOM;
<hr><input type="submit" value="送信"></form>
</body></html>
EOM
exit;
}

#---------------------------------------
# 配送先入力画面
#---------------------------------------
sub addr2 {
local($err) = @_;

&header;
print "配送先入力<hr>\n";

# エラー時
if ($err) {
print "<font color=\"$err_col\">入力エラーがあります.</font>\n";
}

print <<EOM;
<form action="$script" method="post">
<input type="hidden" name="mode" value="conf">
<input type="hidden" name="haiso" value="2">
配送先名前
EOM

if ($err{'name2'}) {
print "<font color=\"$err_col\">入力エラー</font>\n";
}

print <<EOM;
<br><input type="text" name="name2" value="$in{'name2'}" size="6" istyle="3"><br>
配送先電話
EOM

if ($err{'tel2'}) {
print "<font color=\"$err_col\">入力エラー</font>\n";
}

print <<EOM;
<br><input type="text" name="tel2" value="$in{'tel2'}" size="6" istyle="4"><br>
配送先〒
EOM

if ($err{'zip2'}) {
print "<font color=\"$err_col\">入力エラー</font>\n";
}

print <<EOM;
<br><input type="text" name="zip2" value="$in{'zip2'}" size="6" istyle="4"><br>
配送先住所
EOM

if ($err{'pref2'} || $err{'addr2'}) {
print "<font color=\"$err_col\">入力エラー</font>\n";
}

print <<EOM;
<br><select name="pref2">
<option value="">▼都道府県
EOM

foreach (0 .. $#pref) {
($pref) = split(/,/, $pref[$_]);

if ($in{'pref2'} eq $_) {
print "<option value=\"$_\" selected>$pref\n";
} else {
print "<option value=\"$_\">$pref\n";
}
}

print <<EOM;
</select><br>
<textarea name="addr2" cols="10" rows="2" istyle="1">$in{'addr2'}</textarea><br>
EOM

foreach ( 'payment','mon','day','deli','name','email','tel','zip','pref','addr','usrname', ) {
print "<input type=\"hidden\" name=\"$_\" value=\"$in{$_}\">\n";
}
foreach ( split(/\0/, $in{'cart'}) ) {
print "<input type=\"hidden\" name=\"cart\" value=\"$_\">\n";
}

print <<EOM;
<hr><input type="submit" value="送信"></form>
</body></html>
EOM
exit;
}

#---------------------------------------
# 確認画面
#---------------------------------------
sub conf {
# 入力チェック
local($flg,%err);
if (!$in{'name'}) { $flg++; $err{'name'}++; }
if ($zeus_serv && $in{'payment'} == $#payment && !$in{'usrname'}) {
$flg++; $err{'usrname'}++;
}
if ($in{'email'} !~ /^[\w\.\-]+\@[\w\.\-]+\.[a-zA-Z]{2,6}$/) {
$flg++; $err{'email'}++;
}
if (!$in{'tel'}) { $flg++; $err{'tel'}++; }
if (!$in{'zip'}) { $flg++; $err{'zip'}++; }
if ($in{'pref'} eq '') { $flg++; $err{'pref'}++; }
if (!$in{'addr'}) { $flg++; $err{'addr'}++; }
if ($flg) { &addr('err'); }

if ($in{'haiso'} == 1) {
&addr2;
}

if ($in{'haiso'} == 2) {
local($flg,%err);
if (!$in{'name2'}) { $flg++; $err{'name2'}++; }
if (!$in{'tel2'}) { $flg++; $err{'tel2'}++; }
if (!$in{'zip2'}) { $flg++; $err{'zip2'}++; }
if ($in{'pref2'} eq '') { $flg++; $err{'pref2'}++; }
if (!$in{'addr2'}) { $flg++; $err{'addr2'}++; }
if ($flg) { &addr2('err'); }
}

if ($in{'mon'} && $in{'day'}) {
$deli = "$in{'mon'}/$in{'day'}";
}

# データ項目認識
local(%name,%code,%size,%col,%pri,%memo);
open(IN,"$logfile");
while (<IN>) {
local($no,$cate,$code,$nam,$price,$num,$size,$col,$memo) = split(/<>/);

$name{$no} = $nam;
$code{$no} = $code;
$size{$no} = $size;
$col{$no} = $col;
$pri{$no} = $price;
$memo{$no} = $memo;
}
close(IN);

&header;
print <<EOM;
確認後,確定ボタンを押してください.
<form action="$script" method="post">
<input type="hidden" name="mode" value="send">
EOM

# カゴ中身展開
$all=0;
foreach ( split(/\0/, $in{'cart'}) ) {
($no,$num,$size,$col) = split(/,/);

print "<input type=\"hidden\" name=\"cart\" value=\"$_\">\n";

# 金額
$kei = $pri{$no} * $num;
$all += $kei;
$kei = &comma($kei);

print "<hr><font color=\"$pt_col\">$name{$no}</font>\n";
print "<br>$code{$no}<br>$kei円<br>数:$num<br>\n";

if ($size ne "") {
@size = split(/,/, $size{$no});
print "$opt_1:$size[$size]<br>\n";
}
if ($col ne "") {
@col = split(/,/, $col{$no});
print "$opt_2:$col[$col]<br>\n";
}
}

# 送料
local($pref,$cari1) = split(/,/, $pref[$in{'pref'}]);
local($pref2,$cari2) = split(/,/, $pref[$in{'pref2'}]);
local($cari);
if ($in{'haiso'} == 2) {
$cari = $cari2;
} else {
$cari = $cari1;
}
if ($cari > 0) { $cari_flg=1; }
if ($cari_zero && $cari_zero < $all) {
$cari = 0;
}

# 手数料
local($pay,$cost) = split(/,/, $payment[$in{'payment'}]);
if ($cost > 0) { $cost_flg=1; }
if ($paym_zero && $paym_zero < $all) {
$cost = 0;
}

# 送料+手数料を小計に足しこむ
$all += $cost + $cari;

# コンマ化
$all_c = &comma($all);
$cari_c = &comma($cari);
$cost_c = &comma($cost);

# フッタ画面
print "<hr>";
print "[送料]<br>$cari_c円<br>\n" if ($cari_flg);
print "[手数料]<br>$cost_c円<br>\n" if ($cost_flg);
print "[合計]<br>$all_c円<hr>\n";

print <<EOM;
[支払]<br><font color="$pt_col">$pay</font><br>
[名前]<br><font color="$pt_col">$in{'name'}</font><br>
EOM

if ($in{'usrname'}) {
print "[クレジットカード氏名]<br>";
print "<font color=\"$pt_col\">$in{'usrname'}</font><br>\n";
}

print <<EOM;
[e-mail]<br><font color="$pt_col">$in{'email'}</font><br>
[電話]<br><font color="$pt_col">$in{'tel'}</font><br>
[〒]<br><font color="$pt_col">$in{'zip'}</font><br>
[住所]<br><font color="$pt_col">$pref<br>$in{'addr'}</font><br>
EOM

if ($in{'haiso'} == 2) {
print "<hr>[配送先名前]<br><font color=\"$pt_col\">$in{'name2'}</font><br>\n";
print "[配送先電話]<br><font color=\"$pt_col\">$in{'tel2'}</font><br>\n";
print "[配送先〒]<br><font color=\"$pt_col\">$in{'zip2'}</font><br>\n";
print "[配送先住所]<br><font color=\"$pt_col\">$pref2<br>$in{'addr2'}</font><br>\n";
}

foreach ( 'payment','mon','day','deli','name','email','tel','zip','pref','addr','name2','tel2','zip2','pref2','addr2','haiso','usrname', ) {
print "<input type=\"hidden\" name=\"$_\" value=\"$in{$_}\">\n";
}

print <<EOM;
<hr><input type="submit" value="確定"></form>
</body></html>
EOM
exit;
}

#---------------------------------------
# 送信
#---------------------------------------
sub send {
# 入力チェック
local($flg,%err);
if (!$in{'name'}) { $flg++; $err{'name'}++; }
if ($in{'email'} !~ /^[\w\.\-]+\@[\w\.\-]+\.[a-zA-Z]{2,6}$/) {
$flg++; $err{'email'}++;
}
if (!$in{'tel'}) { $flg++; $err{'tel'}++; }
if (!$in{'zip'}) { $flg++; $err{'zip'}++; }
if ($in{'pref'} eq '') { $flg++; $err{'addr'}++; }
if (!$in{'addr'}) { $flg++; $err{'addr'}++; }
if ($flg) { &addr('err'); }

# 改行
$in{'addr'} =~ s/&lt;br&gt;/\n/g;

# データ項目認識
local(%name,%code,%size,%col,%pri,%memo);
open(IN,"$logfile");
while (<IN>) {
local($no,$cate,$code,$nam,$price,$num,$size,$col,$memo) = split(/<>/);

$name{$no} = $nam;
$code{$no} = $code;
$size{$no} = $size;
$col{$no} = $col;
$pri{$no} = $price;
$memo{$no} = $memo;
}
close(IN);

# メール文面
local($mbody) = <<EOM;
ご注文ありがとうございました。
以下の内容で承りました.
発送日等の詳細を、後ほどご連絡致します。

[注文]
EOM

foreach ( split(/\0/, $in{'cart'}) ) {
local($no,$num,$size,$col) = split(/,/);

# 金額
$kei = $pri{$no} * $num;
$all += $kei;
$kei = &comma($kei);

$mbody .= "$name{$no}\n$code{$no}\n$kei円\n数:$num\n";

if ($size ne "") {
@size = split(/,/, $size{$no});
$mbody .= "$opt_1:$size[$size]\n";
}
if ($col ne "") {
@col = split(/,/, $col{$no});
$mbody .= "$opt_2:$col[$col]\n";
}
$mbody .= "\n";
}

# 送料
local($cari) = 0;
local($pref_1,$cari_1) = split(/,/, $pref[$in{'pref'}]);
local($pref_2,$cari_2) = split(/,/, $pref[$in{'pref2'}]);

if ($in{'haiso'} == 2) {
$cari = $cari_2;
} else {
$cari = $cari_1;
}
if ($cari > 0) { $cari_flg=1; }
if ($cari_zero && $cari_zero < $all) {
$cari = 0;
}

# 手数料
local($pay,$cost) = split(/,/, $payment[$in{'payment'}]);
if ($cost > 0) { $cost_flg=1; }
if ($paym_zero && $paym_zero < $all) {
$cost = 0;
}

# 送料+手数料を小計に足しこむ
$all += $cost + $cari;

# コンマ化
$all_c = &comma($all);
$cari_c = &comma($cari);
$cost_c = &comma($cost);

$mbody .= "[送料] $cari_c円\n" if ($cari_flg);
$mbody .= "[手数料] $cost_c円\n" if ($cost_flg);
$mbody .= "[合計] $all_c円\n\n";

if ($in{'mon'} && $in{'day'}) {
$deli = "$in{'mon'}/$in{'day'}";
}

# 時間取得
local($min,$hour,$mday,$mon,$year) = (localtime(time))[1..5];
local($date) = sprintf("%04d/%02d/%02d-%02d:%02d",
$year+1900,$mon+1,$mday,$hour,$min);
local($date2) = sprintf("%02d%02d%02d",
$year-100,$mon+1,$mday);
local($logdata) = "$logdir/" . sprintf("%04d%02d", $year+1900,$mon+1) . ".cgi";

# 注文番号
local($num)=0;
open(DAT,"+< $numfile") || &error("Open Err");
eval "flock(DAT, 2);";
$num = <DAT> + 1;
close(DAT);

# ログ保存
open(OUT,">>$logdata");
eval "flock(OUT, 2);";
print OUT "$date<>$date2-$num<>$all<>$in{'name'}<>$in{'email'}<>\n";
close(OUT);

$num = sprintf("%06d", $num);

$mbody .= <<EOM;
注文No = $date2-$num
注文日 = $date
支払 = $pay
名前 = $in{'name'}
e-mail = $in{'email'}
電話 = $in{'tel'}
〒 = $in{'zip'}
住所 = $pref_1
$in{'addr'}
EOM

if ($in{'haiso'} == 2) {
$mbody .= "配送先名前 = $in{'name2'}\n";
$mbody .= "配送先電話 = $in{'tel2'}\n";
$mbody .= "配送先〒 = $in{'zip2'}\n";
$mbody .= "配送先住所 = $pref_2\n$in{'addr2'}\n";
}

require $jcode;
$sub = &base64("注文メール($in{'name'}様)");

# sendmail送信
open(MAIL,"| $sendmail -t -i") || &error("送信失敗");
print MAIL "To: $master, $in{'email'}\n";
print MAIL "From: $in{'email'}\n";
print MAIL "Subject: $sub\n";
print MAIL "MIME-Version: 1.0\n";
print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "X-Mailer: $ver\n\n";
foreach ( split(/\n/, $mbody) ) {
&jcode::convert(\$_, 'jis', 'sjis');
print MAIL $_, "\n";
}
close(MAIL);

&header;
print "注文を受け付けました.\n";

# クレジット連携
if ($zeus_serv && $in{'payment'} == $#payment) {

local($money) = $all;
local($usrtel) = $in{'tel'};
$usrtel =~ s/\D//g;

print "<hr>$zeus_msg\n";
print "<form action=\"https://linkpt.cardservice.co.jp/cgi-bin/order.cgi\" method=\"post\">\n";
print "<input type=\"hidden\" name=\"clientip\" value=\"$zeus_num\">\n";
print "<input type=\"hidden\" name=\"act\" value=\"imode\">\n";
print "<input type=\"hidden\" name=\"usrname\" value=\"$in{'usrname'}\">\n";
print "<input type=\"hidden\" name=\"money\" value=\"$money\">\n";
print "<input type=\"hidden\" name=\"usrtel\" value=\"$usrtel\">\n";
print "<input type=\"hidden\" name=\"usrmail\" value=\"$in{'email'}\">\n";
print "<input type=\"hidden\" name=\"sendid\" value=\"$date2-$num\">\n";
print "<input type=\"hidden\" name=\"sendpoint\" value=\"0\">\n";
print "<input type=\"submit\" value=\"クレジット支払手続\">\n";
print "</form>\n";

# 一般画面
} else {
print "<form action=\"$script\">\n";
print "<input type=\"submit\" value=\"TOPへ\"></form>\n";
}

print <<EOM;
</body></html>
EOM
exit;
}

#-------------------------------------------------
# BASE64変換
#-------------------------------------------------
#とほほのWWW入門で公開されているルーチンを参考にしました。
#http://tohoho.wakusei.ne.jp/
sub base64 {
local($sub) = @_;
&jcode'convert(*sub, 'jis', 'sjis');

$sub =~ s/\x1b\x28\x42/\x1b\x28\x4a/g;
$sub = "=?iso-2022-jp?B?" . &b64enc($sub) . "?=";
$sub;
}
sub b64enc {
local($ch)="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
local($x, $y, $z, $i);
$x = unpack("B*", $_[0]);
for ($i=0; $y=substr($x,$i,6); $i+=6) {
$z .= substr($ch, ord(pack("B*", "00" . $y)), 1);
if (length($y) == 2) {
$z .= "==";
} elsif (length($y) == 4) {
$z .= "=";
}
}
$z;
}

#---------------------------------------
# 特定商取引に関する法律
#---------------------------------------
sub raw_view {
&header;
print <<EOM;
<form action="$script" method="post">
EOM

foreach ( 'payment','mon','day','deli','name','email','tel','zip','pref','addr','name2','tel2','zip2','pref2','addr2','haiso', ) {
print "<input type=\"hidden\" name=\"$_\" value=\"$in{$_}\">\n";
}

print <<EOM;
<input type="submit" value="戻る"></form>
EOM

local($no,$key,$val);
open(IN,"$rawfile") || &error("Open Err");
while (<IN>) {
($no,$key,$val) = split(/\t/);

print "[$key]<br>$val<br>\n";
}
close(IN);

print <<EOM;
</body></html>
EOM
exit;
}

#---------------------------------------
# フォームデコード
#---------------------------------------
sub decode {
local($buf);
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $buf, $ENV{'CONTENT_LENGTH'});
} else {
$buf = $ENV{'QUERY_STRING'};
}

$cart_data = '';
$dele_data = '';
$page = 0;
undef(%in);
foreach ( split(/&/, $buf) ) {
local($key,$val) = split(/=/);

$key =~ tr/+/ /;
$key =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2", $1)/eg;
$val =~ tr/+/ /;
$val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2", $1)/eg;

# エスケープ
$val =~ s/&/&amp;/g;
$val =~ s/"/&quot;/g;
$val =~ s/</&lt;/g;
$val =~ s/>/&gt;/g;
$val =~ s/\r\n/<br>/g;
$val =~ s/\r/<br>/g;
$val =~ s/\n/<br>/g;

# 購入
if ($key =~ /^cart(\d+)$/) {
$cart_data = $1;
}
# 削除
if ($key =~ /^dele(\d+)$/) {
$dele_data = $1;
}
# ページ数
if ($key =~ /^page(\d+)$/) {
$page = $1;
}

$in{$key} .= "\0" if (defined($in{$key}));
$in{$key} .= $val;
}
$mode = $in{'mode'};

# タイムゾーン設定
$ENV{'TZ'} = "JST-9";

$headflag = 0;
}

#-------------------------------------------------
# チェックモード
#-------------------------------------------------
sub check {
&header;
print <<EOM;
check mode<hr>
<ul>
EOM

foreach ( $logfile, $rawfile, $seqfile, $numfile ) {

if (-e $_) {
print "<li>$_のパスOK\n";
} else {
print "<li>$_のパスNG\n";
}
if (-r $_ && -w $_) {
print "<li>$_のパーミッションOK\n";
} else {
print "<li>$_のパーミッションNG\n";
}
}

# ディレクトリチェック
foreach ( $imgdir, $logdir ) {

print "<li>ディレクトリ名 → $_\n";

if (-d $_) {
print "<li>$_のパス:OK\n";
if (-r $_ && -w $_ && -x $_) {
print "<li>$_のパーミッション:OK\n";
} else {
print "<li>$_のパーミッション:NG → $_\n";
}
} else {
print "<li>$_のパス:NG → $_\n";
}
}

# sendmailチェック
if (-e $sendmail) {
print "<li>sendmailパス:OK!\n";
} else {
print "<li>sendmailパス:NG → $sendmail\n";
}

# jcode.pl バージョンチェック
require $jcode;
print "<li>jcode.plバージョンチェック:";

if ($jcode'version < 2.13) {
print "バージョンが低いようです。→ v$jcode'version\n";
} else {
print "バージョンOK (v$jcode'version)\n";
}

print <<EOM;
<li>バージョン : $ver
</ul>
</body>
</html>
EOM
exit;
}



記事No: 5262
投稿日: 2009/01/09(Fri) 15:43:12
タイトルRe: minicartの金額が計算されません。
ID情報: treev
投稿者: treev
URLhttp://www.sawako.info/health-mini/minicart/minicart.cgi

#!/usr/local/bin/perl

#┌─────────────────────────────────
#│ ■携帯買物カート
#│ admin.cgi - 2008/07/13
#│ Copyright (c) KentWeb
#│ webmaster@kent-web.com
#│ http://www.kent-web.com/
#└─────────────────────────────────

# 外部ファイル
require './init.cgi';
require $jcode;
require $cgilib;

&decode;
if ($in{'pass'} eq '') { &enter; }
elsif ($in{'pass'} ne $pass) { &error("認証エラー"); }
elsif ($in{'mode_top'}) { &mymenu; }
elsif ($in{'mode_goods'}) { &admin; }
elsif ($in{'mode_sales'}) { &sales; }
elsif ($in{'mode_raw'}) { &edit_raw; }
&mymenu;

#-------------------------------------------------
# 管理TOP画面
#-------------------------------------------------
sub mymenu {
&header;
print <<EOM;
<h3>管理画面TOP</h3>
<form action="$admincgi" method="post">
<input type="hidden" name="pass" value="$in{'pass'}">
<table border="1" cellspacing="0" cellpadding="4" width="220">
<tr>
<th nowrap>選択</th>
<th width="100%">項目</th>
</tr>
<tr>
<td><input type="submit" name="mode_goods" value="選択"></td>
<td width="100%">■商品管理</td>
</tr>
<tr>
<td><input type="submit" name="mode_sales" value="選択"></td>
<td width="100%">■集計管理</td>
</tr>
<tr>
<td><input type="submit" name="mode_raw" value="選択"></td>
<td width="100%">■特定商取引法</td>
</tr>
</table>
</form>
<hr>
<a href="$script">販売画面</a><br>
</body></html>
EOM
exit;
}

#-------------------------------------------------
# 管理画面
#-------------------------------------------------
sub admin {
# 新規フォーム
if ($in{'job'} eq "new") {

&new_form;

# 新規登録
} elsif ($in{'job'} eq "new2") {

my ($err, $flg);
if (!$in{'name'}) { $flg++; $err{'name'}++; }
if (!$in{'code'}) { $flg++; $err{'code'}++; }
if (!$in{'price'}) { $flg++; $err{'price'}++; }
if (!$in{'memo'}) { $flg++; $err{'memo'}++; }
if ($flg) { &new_form('err'); }

# SEQ発行
open(DAT,"+< $seqfile");
my $seq = <DAT> + 1;
seek(DAT, 0, 0);
print DAT $seq;
close(DAT);

# 画像アップ
if ($in{'upfile'}) { $ex = &upfile($seq); }

# データオープン
my (@sort, @data);
open(DAT,"+< $logfile") || &error("Open Error: $logfile");
while (<DAT>) {
my ($no,$cate) = split(/<>/);

push(@sort,$cate) if ($cate_key);
push(@data,$_);
}

unshift(@data,"$seq<>$in{'cate'}<>$in{'code'}<>$in{'name'}<>$in{'price'}<>$in{'num'}<>$in{'size'}<>$in{'col'}<>$ex<>$in{'memo'}<>\n");

# ソート
if ($cate_key) {
unshift(@sort,$in{'cate'});
@data = @data[sort {$sort[$a] <=> $sort[$b]} 0..$#sort];
}

# データ更新
seek(DAT, 0, 0);
print DAT @data;
truncate(DAT, tell(DAT));
close(DAT);

# 修正フォーム
} elsif ($in{'job'} eq "edit" && $in{'no'}) {

if ($in{'no'} =~ /\0/) {
&error("修正選択は1つのみです");
}

local($no,$cate,$code,$nam,$price,$num,$size,$col,$ex,$memo);

# データオープン
open(IN,"$logfile") || &error("Open Error: $logfile");
while (<IN>) {
chomp;
($no,$cate,$code,$nam,$price,$num,$size,$col,$ex,$memo) = split(/<>/);

last if ($in{'no'} == $no);
}
close(IN);

&new_form($no,$cate,$code,$nam,$price,$num,$size,$col,$ex,$memo);

# 修正
} elsif ($in{'job'} eq "edit2" && $in{'no'}) {

my ($err, $flg);
if (!$in{'name'}) { $flg++; $err{'name'}++; }
if (!$in{'code'}) { $flg++; $err{'code'}++; }
if (!$in{'price'}) { $flg++; $err{'price'}++; }
if ($flg) { &new_form('err'); }

# 画像アップ
my $ex2;
if ($in{'upfile'}) { $ex2 = &upfile($in{'no'}); }

# データオープン
my (@sort, @data);
open(DAT,"+< $logfile") || &error("Open Error: $logfile");
while (<DAT>) {
chomp;
my ($no,$cate,$code,$nam,$price,$num,$size,$col,$ex,$memo) = split(/<>/);

if ($in{'no'} == $no) {

# 画像削除
if ($ex && $in{'imgdel'}) {
unlink("$imgdir/$no$ex");
$ex = '';

# 画像アップ
} elsif ($ex2) {
if ($ex && $ex ne $ex2) { unlink("$imgdir/$no$ex"); }
$ex = $ex2;
}

$_ = "$no<>$in{'cate'}<>$in{'code'}<>$in{'name'}<>$in{'price'}<>$in{'num'}<>$in{'size'}<>$in{'col'}<>$ex<>$in{'memo'}<>\n";
$cate = $in{'cate'};
}
push(@sort,$cate) if ($cate_key);
push(@data,"$_\n");
}

# ソート
if ($cate_key) {
@data = @data[sort {$sort[$a] <=> $sort[$b]} 0..$#sort];
}

# データ更新
seek(DAT, 0, 0);
print DAT @data;
truncate(DAT, tell(DAT));
close(DAT);

# 削除
} elsif ($in{'job'} eq "dele" && $in{'no'}) {

# 削除情報
my @del = split(/\0/, $in{'no'});

# データオープン
my @data;
open(DAT,"+< $logfile") || &error("Open Error: $logfile");
while (<DAT>) {
chomp;
my ($no,$cate,$code,$nam,$price,$num,$size,$col,$ex,$memo) = split(/<>/);

my $flg;
foreach my $del (@del) {
if ($no == $del) {
$flg++;
unlink("$imgdir/$no$ex");
last;
}
}
if (!$flg) { push(@data,"$_\n"); }
}

# データ更新
seek(DAT, 0, 0);
print DAT @data;
truncate(DAT, tell(DAT));
close(DAT);

# 並び替え
} elsif ($in{'job'} eq "sort") {

# データオープン
my (@sort, @data);
open(DAT,"+< $logfile") || &error("Open Error: $logfile");
while (<DAT>) {
my ($no,$cate,$code,$nam,$price,$num,$size,$col,$ex,$memo) = split(/<>/);

push(@sort,$in{"sort$no"});
push(@data,$_);
}

# ソート
@data = @data[sort {$sort[$a] <=> $sort[$b]} 0 .. $#sort];

# データ更新
seek(DAT, 0, 0);
print DAT @data;
truncate(DAT, tell(DAT));
close(DAT);
}

&header;
print <<EOM;
<form action="$admincgi" method="post">
<input type="submit" name="mode_top" value="管理TOP">
<hr>
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="hidden" name="mode_goods" value="1">
EOM

if ($cate_key) {
print "カテゴリー<br><select name=\"cate\">\n";

my $top;
foreach ( sort{ $a <=> $b }(keys(%cate)) ) {

if ($top eq "") { $top = $_; }

if ($in{'cate'} eq $_) {
print "<option value=\"$_\" selected>$cate{$_}\n";
} else {
print "<option value=\"$_\">$cate{$_}\n";
}
}
print "</select><br>\n";

if ($in{'cate'} eq "") { $in{'cate'} = $top; }
}

print <<EOM;
<ul>
<li>処理を選択して送信ボタンを押してください.
<li>並替の時は「順番」の数値を変更してください.
</ul>
処理
<select name="job">
<option value="">▼選択
<option value="new">新規
<option value="sort">並替
<option value="edit">修正
<option value="dele">削除
</select>
<input type="submit" value="送信">
<p></p>
<table border="1" cellspacing="0" cellpadding="2">
<tr>
<th nowrap>選択</th>
<th nowrap>順番</th>
<th nowrap>商品名</th>
</tr>
EOM

my $i = 0;
open(IN,"$logfile") || &error("Open Error: $logfile");
while (<IN>) {
my ($no,$cate,$code,$nam,$price,$num,$size,$col,$memo) = split(/<>/);

# カテゴリ分けのとき
next if ($cate_key && $in{'cate'} ne $cate);

$i++;
#next if ($i < $page + 1);
#next if ($i > $page + 10);

print qq|<tr><th><input type="checkbox" name="no" value="$no"></th>|;
print qq|<td><input type="text" name="sort$no" value="$i" size="3"></td>|;

if ($cate_key) { print "[$cate{$cate}]"; }

print "<td>$nam</td></tr>\n";
}
close(IN);

# ページ繰り越し
#my $next = $page + 10;
#my $back = $page - 10;

#if ($back >= 0) {
#print "<input type=\"submit\" name=\"page$back\" value=\"前頁\">\n";
#}
#if ($next < $i) {
#print "<input type=\"submit\" name=\"page$next\" value=\"次頁\">\n";
#}

print <<EOM;
</table>
</form>
</body></html>
EOM
exit;
}

#-------------------------------------------------
# 新規フォーム
#-------------------------------------------------
sub new_form {
local($no,$cate,$code,$nam,$price,$num,$size,$col,$ex,$memo) = @_;

$job = $in{'job'} . '2';

&header;

if ($no eq 'err') {
print "<font color=\"$err_col\">入力に不備があります.</font><br>\n";
$job = $in{'job'};

$nam = $in{'name'};
$code = $in{'code'};
$cate = $in{'cate'};
$price = $in{'price'};
$num = $in{'num'};
$size = $in{'size'};
$col = $in{'col'};
$memo = $in{'memo'};
}

print <<EOM;
<form action="$admincgi" method="post" enctype="multipart/form-data">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="hidden" name="mode_goods" value="1">
<input type="hidden" name="job" value="$job">
<input type="hidden" name="no" value="$in{'no'}">
商品名
EOM

if ($err{'name'}) {
print "<font color=\"$err_col\">入力エラー</font>\n";
}

print <<EOM;
<br>
<input type="text" name="name" size="20" value="$nam"><br>
商品コード
EOM

if ($err{'code'}) {
print "<font color=\"$err_col\">入力エラー</font>\n";
}

print <<EOM;
<br>
<input type="text" name="code" size="20" value="$code"><br>
EOM

if ($cate_key) {
print "カテゴリー<br><select name=\"cate\">\n";
foreach ( sort{ $a <=> $b }(keys(%cate)) ) {
if ($cate eq $_) {
print "<option value=\"$_\" selected>$cate{$_}\n";
} else {
print "<option value=\"$_\">$cate{$_}\n";
}
}
print "</select><br>\n";
}

print "単価\n";

if ($err{'price'}) {
print "<font color=\"$err_col\">入力エラー</font>\n";
}

print <<EOM;
<br>
<input type="text" name="price" size="20" value="$price" style="ime-mode:inactive">円<br>
商品選択数<br><input type="text" name="num" size="5" value="$num" style="ime-mode:inactive">*1<br>
$opt_1<br><input type="text" name="size" size="20" value="$size">*2<br>
$opt_2<br><input type="text" name="col" size="20" value="$col">*2<br>
画像 (JPEG/GIF/PNG)<br><input type="file" name="upfile" size="30">
EOM

if ($ex) {
print "[<a href=\"$imgurl/$no$ex\" target=\"_blank\">画像</a>]\n";
print "<input type=checkbox name=imgdel value=1>削除\n";
}

print <<EOM;
<br>
商品説明<br><input type="text" name="memo" size="6" value="$memo"><br>
<input type="submit" value="送信"></form>
<hr>
*1 数字を入れると,1からその数値まで販売画面でプルダウン表\示.<br>
*2 オプションの選択値をコンマで区切る.
</body>
</html>
EOM
exit;
}

#-------------------------------------------------
# 売上集計画面
#-------------------------------------------------
sub sales_log {
$in{'view'} =~ /^(\d{4})(\d{2})$/;
my $ym = "$1年$2月";

&header;
print <<EOM;
<form action="$admincgi" method="post">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="submit" name="mode_sales" value="&lt; 戻る">
</form>
<hr>
<font color="$pt_col">$ym 売上集計</font>
<p>
<table border="1" cellspacing="0" cellpadding="2">
<tr>
<th>月日</th>
<th>注文No</th>
<th>金額(円)</th>
<th>購入者</th>
</tr>
EOM

my $total = 0;
open(IN,"$logdir/$in{'view'}.cgi");
while (<IN>) {
my ($date,$no,$all,$nam,$eml) = split(/<>/);

$total += $all;
$all = &comma($all);

print "<tr><td>$date</td><td>$no</td>";
print "<td align=\"right\">$all</td>";
print "<td><a href=\"mailto:$eml\">$nam</a></td></tr>\n";
}
close(IN);

$total = &comma($total);

print <<EOM;
<tr>
<th colspan="2">計</th>
<td align="right">$total</td><td><br></td>
</tr>
</table>
</body>
</html>
EOM
exit;
}

#-------------------------------------------------
# 集計トップ
#-------------------------------------------------
sub sales {
# 処理認識
foreach ( keys(%in) ) {
if (/^view(\d+)/) {
$in{'view'} = $1;
} elsif (/^dele(\d+)/) {
$in{'dele'} = $1;
}
}

# 削除
if ($in{'dele'}) {
unlink("$logdir/$in{'dele'}.cgi");
}

opendir(DIR,"$logdir");
my @dir = readdir(DIR);
closedir(DIR);

my (@data, @sort);
foreach (@dir) {
next unless (/(\d+)\.cgi$/);

push(@data,$_);
push(@sort,$1);
}
@data = @data[sort{$sort[$b] <=> $sort[$a]} 0..$#sort];

# 閲覧
if ($in{'view'}) {
&sales_log;
}

&header;
print <<EOM;
<form action="$admincgi" method="post">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="submit" name="mode_top" value="管理TOP"></form>
<hr>
■集計管理
<form action="$admincgi" method="post">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="hidden" name="mode_sales" value="1">
<table border="1" cellspacing="0" cellpadding="3">
<tr>
<th>閲覧</th><th>年月</th><th>種類(B)</th><th>削除</th>
</tr>
EOM

my ($ym,$ym2,$size);
foreach (@data) {
$_ =~ /^(\d{4})(\d{2})/;
$ym = "$1年$2月";
$ym2 = "$1$2";
$size = -s "$logdir/$_";
#$size = int ( $size / 1024 );
$size = &comma($size);

print qq|<tr><th><input type="submit" name="view$ym2" value="閲覧"></th>|;
print qq|<td>$ym</td><td align="right">$size</td>|;
print qq|<th><input type="submit" name="dele$ym2" value="削除"></th></tr>\n|;
}

print <<EOM;
</table>
</form>
</body>
</html>
EOM
exit;
}

#-------------------------------------------------
# 特定商取引法メンテ
#-------------------------------------------------
sub edit_raw {
# 新規追加
if ($in{'add'}) {
if (!$in{'item'} || !$in{'text'}) {
&error("項目または内容が未記入です");
}

my ($new,@data);
open(DAT,"+< $rawfile") || &error("Open Error: $rawfile");
while (<DAT>) {
my ($no,$key,$val) = split(/\t/);

if ($new < $no) { $new = $no; }
push(@data,$_);
}

# 追加
$new++;
seek(DAT, 0, 0);
print DAT "$new\t$in{'item'}\t$in{'text'}\n";
truncate(DAT, tell(DAT));
close(DAT);

# メンテフォーム
} elsif ($in{'mente'} && $in{'no'}) {

local($no,$key,$val);
open(IN,"$rawfile") || &error("Open Error: $rawfile");
while (<IN>) {
($no,$key,$val) = split(/\t/);

if ($in{'no'} == $no) { last; }
}
close(IN);

&raw_edit_form($no,$key,$val);

# 削除
} elsif ($in{'dele'} && $in{'no'}) {

my @data;
open(DAT,"+< $rawfile") || &error("Open Error: $rawfile");
while (<DAT>) {
my ($no,$key,$val) = split(/\t/);

if ($in{'no'} == $no) { next; }
push(@data,$_);
}

seek(DAT, 0, 0);
print DAT @data;
truncate(DAT, tell(DAT));
close(DAT);

# 修正
} elsif ($in{'edit'} && $in{'no'}) {

if (!$in{'item'} || !$in{'text'}) {
&error("項目または内容が未記入です");
}

my @data;
open(DAT,"+< $rawfile") || &error("Open Error: $rawfile");
while (<DAT>) {
my ($no,$key,$val) = split(/\t/);

if ($in{'no'} == $no) {
$_ = "$no\t$in{'item'}\t$in{'text'}\n";
}

push(@data,$_);
}

seek(DAT, 0, 0);
print DAT @data;
truncate(DAT, tell(DAT));
close(DAT);
}

# 画面表示
&header;
print <<EOM;
<form action="$admin" method="post">
<input type="submit" name="mode_top" value="管理TOP"><hr>
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="hidden" name="mode_raw" value="1">
<font color="$pt_col">■新規</font><br>
項目<br><input type="text" name="item" size="8"><br>
内容<br><input type="text" name="text" size="8"><br>
<input type="submit" name="add" value="追加"><hr>
<font color="$pt_col">■修正&amp;削除</font><br>
EOM

open(IN,"$rawfile") || &error("Open Error: $rawfile");
while (<IN>) {
($no,$key,$val) = split(/\t/);

print "<input type=\"radio\" name=\"no\" value=\"$no\">$key<br>\n";
}
close(IN);

print <<EOM;
<input type="submit" name="mente" value="選択"></form>
</body></html>
EOM

exit;
}

#-------------------------------------------------
# メンテフォーム
#-------------------------------------------------
sub raw_edit_form {
local($no,$key,$val) = @_;

&header;
print <<EOM;
<form action="$admin" method="post">
<input type="hidden" name="pass" value="$in{'pass'}">
<input type="hidden" name="no" value="$in{'no'}">
<input type="hidden" name="mode_raw" value="1">
<font color="$pt_col">■修正&amp;削除</font><br>
項目<br><input type="text" name="item" size="8" value="$key"><br>
内容<br><input type="text" name="text" size="8" value="$val"><br>
<input type="submit" name="edit" value="修正"><hr>
<input type="submit" name="dele" value="削除する"></form>
</body></html>
EOM
exit;
}

#-------------------------------------------------
# 入室画面
#-------------------------------------------------
sub enter {
&header;
print <<EOM;
パスワード入力<br>
<form action="$admincgi" method="post">
<input type="password" name="pass" size="6">
<input type="submit" value="認証"></form>
</body></html>
EOM
exit;
}

#-------------------------------------------------
# フォームデコード
#-------------------------------------------------
sub decode {
$page = 0;

&ReadParse;
while ( my ($key, $val) = each(%in) ) {

next if ($key eq "upfile");

# シフトJISコード変換
&jcode::convert(\$val, 'sjis');

# エスケープ
$val =~ s/&/&amp;/g;
$val =~ s/"/&quot;/g;
$val =~ s/</&lt;/g;
$val =~ s/>/&gt;/g;
$val =~ s/\r\n/<br>/g;
$val =~ s/\r/<br>/g;
$val =~ s/\n/<br>/g;

# ページ数
if ($key =~ /^page(\d+)$/) {
$page = $1;
}

$in{$key} = $val;
}
$mode = $in{'mode'};

# タイムゾーン設定
$ENV{'TZ'} = "JST-9";

$headflag = 0;
}

#-------------------------------------------------
# 画像アップロード
#-------------------------------------------------
sub upfile {
local($no) = @_;

# 画像処理
my ($macbin, $tail, $fname);
foreach (@in) {
if (/(.*)Content-type:(.*)/i) { $tail = $2; }
if (/(.*)filename="([^"]*)"/i) { $fname = $2; }
if (/application\/x-macbinary/i) { $macbin = 1; }
}
$tail =~ s/\r//g;
$tail =~ s/\n//g;

# ファイル形式を認識
my $flag;
if ($tail =~ /image\/gif/i) { $tail = ".gif"; $flag = 1; }
if ($tail =~ /image\/p?jpeg/i) { $tail = ".jpg"; $flag = 1; }
if ($tail =~ /image\/x-png/i) { $tail = ".png"; $flag = 1; }

if (!$flag) {
if ($fname =~ /\.gif$/i) { $tail = ".gif"; $flag = 1; }
if ($fname =~ /\.jpe?g$/i) { $tail = ".jpg"; $flag = 1; }
if ($fname =~ /\.png$/i) { $tail = ".png"; $flag = 1; }
}

# アップロード失敗処理
if (!$flag || !$fname) { return; }

my $upfile = $in{'upfile'};

# マックバイナリ対策
if ($macbin) {
$length = substr($upfile, 83, 4);
$length = unpack("%N", $length);
$upfile = substr($upfile, 128, $length);
}

# 添付データを書き込み
my $imgfile = "$imgdir/$no$tail";
open(OUT,"> $imgfile") || &error("画像アップ失敗");
binmode(OUT);
binmode(STDOUT);
print OUT $upfile;
close(OUT);

chmod(0666, $imgfile);

$tail;
}



記事No: 5264
投稿日: 2009/01/09(Fri) 16:06:20
タイトルスイマセン。解決しました。
ID情報: treev
投稿者: treev
URLhttp://www.sawako.info/health-mini/minicart/minicart.cgi

スイマセン。解決しました。

商品の新規登録時に、金額内にコンマを含めるとNGのようです。
お騒がせいたしました。(^_^;)


記事No: 5265
投稿日: 2009/01/09(Fri) 16:11:49
タイトル【注意】
ID情報: pachira
投稿者: pachira
URLhttp://www5e.biglobe.ne.jp/~pachira/

> スイマセン。解決しました。
>
> 商品の新規登録時に、金額内にコンマを含めるとNGのようです。
> お騒がせいたしました。(^_^;)

今後の質問では、以下に留意して下さい。(スクリプトの丸ごと貼り付けは禁止です。)
http://www.kent-web.com/support/sup.html#marugoto


記事No: 5267
投稿日: 2009/01/09(Fri) 16:57:59
タイトルRe: 【注意】
ID情報: treev
投稿者: treev
URLhttp://www.sawako.info/health-mini/minicart/minicart.cgi

すいません。そうでした。外部リンクで見てもらえば良かったです。
今後気をつけます。
申し訳ありませんでした。


[検索ページ]