--- orig/item_search.cgi Mon May 10 17:24:32 2004 +++ item_search.cgi Mon May 17 13:20:47 2004 @@ -12,12 +12,14 @@ # http://www.cubit.co.jp/ ############################################## require './jcode.pl'; #日本語コード変換ライブラリ +use File::Basename; $rec0 = "./data/item.dat"; #アイテム・マスタのファイル名 $rec1 = "./data/header.dat"; #htmlヘッダのファイル名 $rec2 = "./data/footer.dat"; #htmlフッタのファイル名 $rec5 = ""; #カテゴリ・マスタのファイル名 $rec6 = "./data/shop.dat"; #ショップ設定値のファイル名 +$rec7 = "./data/default.css"; #カスケーディングスタイルシートのファイル名 #以下はshop.datから取得 $data_shop_id = ""; #ショップギアのショップギアID。 @@ -34,10 +36,10 @@ #■■■ ここから ■■■ -&put_header; #■ヘッダ作成 &post_pam; #■post/getで入力値取得 &de_code; #■入力値デコード &mae; #■前処理 +&put_header; #■ヘッダ作成 &main; #■メイン処理 &put_footer; #■フッタ作成 exit; @@ -49,8 +51,22 @@ if (open(TXT, "<$rec1")) { @txt_header = ; close(TXT); + foreach (@txt_header) { + if (/__DESCRIPTION__/i) { + s|__DESCRIPTION__|$data_shop_name|io; + } + if (/__CSS__/i) { + s|__CSS__|$script_dir/$rec7|io; + } + if (/__KEYWORDS__/i) { + s|__KEYWORDS__,||io; + } + if (/__TITLE__/i) { + s|__TITLE__|$data_shop_name|io; + } + print; + } } - print "@txt_header"; } #■post/getで入力値取得 @@ -61,19 +77,42 @@ #■入力値デコード sub de_code { - @pairs = split(/&/,$buf2); - foreach $pair (@pairs) { - ($name,$value) = split(/=/,$pair); - $value =~ tr/+/ /; - $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; - $name =~ tr/+/ /; - $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; - &jcode'convert(*name,'sjis'); &jcode'convert(*value,'sjis'); - if ($value =~ /\r\n/) { $value =~ s/\r//g; } - elsif ($value =~ /\r/) { $value =~ s/\r/\n/g; } - if ($name eq "pam_i_page") { $pam_i_page = $value; } # - if ($name eq "pam_keyword") { $pam_keyword = $value; } #キーワード - if ($name eq "pam_keyword") { $pam_keyword2 = $value; } #キーワード(encodeされないオリジナル) + $script_name = $ENV{'SCRIPT_NAME'}; + $request_uri = $ENV{'REQUEST_URI'}; + $script_dir = dirname($script_name); + + if ($ENV{'QUERY_STRING'} =~ /=/) { + @pairs = split(/&/,$buf2); + foreach $pair (@pairs) { + ($name,$value) = split(/=/,$pair); + $value =~ tr/+/ /; + $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; + $name =~ tr/+/ /; + $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; + &jcode'convert(*name,'sjis'); &jcode'convert(*value,'sjis'); + if ($value =~ /\r\n/) { $value =~ s/\r//g; } + elsif ($value =~ /\r/) { $value =~ s/\r/\n/g; } + if ($name eq "pam_i_page") { $pam_i_page = $value; } # + if ($name eq "pam_keyword") { $pam_keyword = $value; } #キーワード + if ($name eq "pam_keyword") { $pam_keyword2 = $value; } #キーワード(encodeされないオリジナル) + } + } else { + $query_string = $ENV{'REQUEST_URI'}; + $query_string =~ s|$script_name/||; + + (@param) = split(/\//, $query_string); + + foreach (@param) { + if (/page/) { + ($key_page, $pam_i_page) = split(/_/); + } + if (/key/) { + ($key_key, $pam_keyword) = split(/_/); + $pam_keyword =~ tr/+/ /; + $pam_keyword =~ s/%([a-f\d]{2})/pack 'H2', $1/egi; + $pam_keyword2 = $pam_keyword; + } + } } } @@ -91,22 +130,30 @@ chomp($data_dir = $txt[4]); chomp($data_cat = $txt[5]); chomp($data_item = $txt[6]); + chomp($data_home = $txt[7]); + chop($data_detail = $txt[8]); #商品情報の詳細HP表示 + chop($data_txt_c = $txt[9]); #カテゴリ一覧の文言 + chop($data_txt_i = $txt[10]); #商品一覧の文言 + chop($data_my_cat = $txt[11]); #オリジナルのカテゴリ用HPを利用したい場合 + chop($data_buy_img = $txt[12]); #購入ボタンを画像にしたい場合 + chop($data_img_div = $txt[13]); #商品画像のセンタリング + chop($data_shop_name = $txt[14]); #ショップ名 } #■メイン処理 sub main { #ガイダンス出力 - print "\n"; - print "
\n"; - print "|home\n"; - print "|$data_cat一覧\n"; - print "|$data_item一覧\n"; - print "|\n"; - print "
"; + print "
\n"; + print "|home\n"; + print "|$data_cat一覧\n"; + print "|$data_item一覧\n"; + print "| \n"; + print "\n"; + print "
"; print ""; print ""; print "\n"; - print "
\n"; + print "
\n"; #アイテムを読み込み if (open(TXT, "<$rec0")) { @txt = ; @@ -161,48 +208,48 @@ #◆サブ処理(ページリンクを出力) sub sub_link { - print "
\n"; + print "
\n"; print "Page "; #$iはページ数 for ($i = 1; $i * 10 - 10 < $ctr_num; $i++) { if ($i eq $pam_i_page) { - print "$i "; + print "$i "; } else { #URLエンコード - local($pam_keyword_encoded) = $pam_keyword; - $pam_keyword_encoded =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg; - print "$i "; + local($pam_keyword_encoded) = $pam_keyword2; + $pam_keyword_encoded =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg; # debug write + print "$i "; } } - print " $ctr_num$data_item [$pam_keyword2]で検索
\n"; + print " $ctr_num$data_item [$pam_keyword2]で検索
\n"; print "

\n"; } #◆サブ処理(formタグの出力) sub sub_form { - print "$data_tbl"; #テーブルの形状 + print '
'; $_ = $i_price; s/\G((?:^-)?\d{1,3})(?=(?:\d\d\d)+(?!\d))/$1,/g; $i_price_format = $_; #金額桁数の整形 - print "$i_name"; - if ($i_tanka ne "") { print "($i_tanka)"; } - print " \\$i_price_format [$cat-$i_item]
"; + print "$i_name"; + if ($i_tanka ne "") { print "($i_tanka)"; } + print " \\$i_price_format [$cat-$i_item]
"; #画像(複数可) if ($img ne "") { @imgs = split(/::/,$img); foreach $imgs (@imgs) { - print "

"; + print "
\"$i_name\"

"; } } - print "$com
"; + print "$com
"; #↓ここからformタグ - print "
"; + print ""; print ""; print ""; print ""; #ここから下は右寄せ - print "
"; + print "
"; #在庫管理番号がある場合のみ数量表示 - if ($i_zaiko ne "") { print "在庫数
"; } + if ($i_zaiko ne "") { print "在庫数
"; } print "$i_suumei"; #名称(例:購入数) #数量タグ if ($i_suukai eq $i_suuowa || $i_suuowa eq "") { @@ -259,8 +306,8 @@ print ""; print ""; #ここまで右寄せ - print "
"; - print "

\n"; + print ""; + print "

\n"; } #■フッタ作成