--- orig/cat.cgi Wed May 12 09:11:20 2004 +++ cat.cgi Mon May 17 13:00:26 2004 @@ -3,6 +3,7 @@ ; ############################################## # HPギア +# ver1.51(2004/05/11)見かけのURLを動的なものから静的なものへ変更 # ver1.50(2002/07/10) # ver1.21(2002/04/21) # Copyright(c) 2002 Yaz HOSOGI. All Rights Reserved. @@ -11,6 +12,7 @@ # ※理由の如何を問わず「ショップギア」に連動しなくなるプログラムの改変は一切認めません。 ############################################## require './jcode.pl'; #日本語コード変換ライブラリ +use File::Basename; #プロ級仕様の場合、以下の値は変更可(特にディレクトリ等) $rec0 = "./data/item.dat"; #商品マスタのファイル名 @@ -18,6 +20,7 @@ $rec2 = "./data/footer.dat"; #htmlフッタのファイル名 $rec5 = "./data/cat.dat"; #カテゴリマスタのファイル名 $rec6 = "./data/shop.dat"; #ショップ設定値のファイル名 +$rec7 = "./data/default.css"; #カスケーディングスタイルシートのファイル名 #以下はshop.datから取得 $data_shop_id = ""; #ショップギアのショップギアID @@ -39,10 +42,10 @@ #■■■ ここから ■■■ -&put_header; #■ヘッダ作成 &get_pam; #■入力値取得 &de_code; #■入力値デコード &mae; #■前処理 +&put_header; #■ヘッダ作成 &main; #■メイン処理 &put_footer; #■フッタ作成 exit; @@ -50,11 +53,25 @@ #■ヘッダ作成 sub put_header { - print "Content-type: text/html\n\n"; + print "Content-Type: text/html\n\n"; if (open(TXT, "<$rec1")) { @txt_header = ; close(TXT); - print "@txt_header"; + 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; + } } } @@ -66,19 +83,28 @@ #■入力値デコード 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_c_page") { $pam_c_page = $value; } #カテゴリ・ページ番号 - - + $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_c_page") { $pam_c_page = $value; } #カテゴリ・ページ番号 + } + } else { + $query_string = $ENV{'REQUEST_URI'}; + $query_string =~ s|$script_name/||; + ($param, $pam_c_page) = split(/_/, $query_string); + $pam_c_page = 1 if ($pam_c_page !~ /^[0-9]+$/); } } @@ -100,6 +126,13 @@ chop($data_detail = $txt[8]); #商品情報の詳細HP表示 chop($data_txt_c = $txt[9]); #カテゴリ一覧の文言 chop($data_txt_i = $txt[10]); #商品一覧の文言 + chop($data_txt_i = $txt[11]); #商品一覧の文言 + chop($data_txt_i = $txt[12]); #商品一覧の文言 + chop($data_txt_i = $txt[13]); #商品一覧の文言 + 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]); #ショップ名 } #■メイン処理 @@ -117,16 +150,17 @@ } @txt = @txt_temp; #ガイダンス出力 - print "
\n"; - print "|home\n"; - print "|$data_cat一覧\n"; - print "|$data_item一覧\n"; - print "|\n"; - print "
\n"; + print "
\n"; + print "|home\n"; + print "|$data_cat一覧\n"; + print "|$data_item一覧\n"; + print "|\n"; + print " \n"; + print "
\n"; if ($data_txt_c ne "") { print "
\n"; - print "
\n"; + print "
\n"; print "$data_txt_c
\n"; print "

\n"; } @@ -141,8 +175,8 @@ ($cat,$img,$com,$nam,$hide) = split(/,/, $text); $i_page++; if ($pam_c_page * 10 - 10 < $i_page && $i_page < $pam_c_page * 10 + 1) { - print "$data_tbl"; - print "$nam [$cat] "; + print '
'; + print "$nam [$cat] "; #該当する商品数を算出 if (open(CNT, "$rec0")) { @cnt = ; @@ -153,12 +187,12 @@ ($i_item,$nichi,$cat2) = split(/,/, $cnt); if ($cat2 eq $cat) { $num_item++ } } - print "$num_item$data_item該当
"; + print "$num_item$data_item該当
"; #画像があれば表示 if ($img ne "") { - print "

\n"; + print "
\"$nam\"

\n"; } - print "$com
"; + print "
$com

"; print "

\n"; } } @@ -168,22 +202,22 @@ #◆サブ処理(ページリンクを出力) sub sub_link { - print "
\n"; + print "
\n"; print "Page "; #$iはページ数 #「前へ」を表示 for ($i = 1; $i * 10 - 10 < $ctr_num; $i++) { if ($i eq $pam_c_page && $i ne 1) { $i_temp = $i - 1; - print "前へ "; + print "前へ "; } } #12345を表示 for ($i = 1; $i * 10 - 10 < $ctr_num; $i++) { if ($i eq $pam_c_page) { - print "$i "; + print "$i "; } else { - print "$i "; + print "$i "; } } #「次へ」を表示 @@ -191,11 +225,11 @@ for ($i = 1; $i * 10 - 10 < $ctr_num; $i++) { if ($i eq $pam_c_page && $i ne $i_last) { $i_temp = $i + 1; - print "次へ "; + print "次へ "; } } - print " $ctr_num$data_cat\n"; - print "

\n"; + print " $ctr_num$data_cat\n"; + print "

\n"; } #■フッタ作成 @@ -203,7 +237,10 @@ if (open(TXT, "<$rec2")) { @txt_footer = ; close(TXT); - print "@txt_footer"; + foreach (@txt_footer) { + print; + } +# print "@txt_footer"; } } @@ -211,7 +248,7 @@ sub error { print "*** ERROR *** \n"; print "$_[0]\n"; - print "

\n"; + print "

\n"; print "ブラウザの「戻る」ボタンで前の画面に移動して下さい。
\n"; &put_footer; #フッタ作成 exit;