#!/usr/bin/perl #文字コードライブラリ require './jcode.pl'; #HTMLライブラリ require './news.pl'; require './nomal.pl'; require './item.pl'; require './menu.pl'; require './profile.pl'; require './contact.pl'; require './cart.pl'; require './form.pl'; #スクリプト名 $script="./sitemaker.cgi"; #固定画像 $pdf ="pdf.gif"; $spacer="spacer.gif"; #ログファイルディレクトリ $comment="./comment"; $design ="./design"; $rules ="./rules"; $access_flag=0; #ホスト名取得 $user_host=$ENV{'HTTP_HOST'}; open(IN,"$rules/server.dat"); @ini=; close(IN); ($set1,$set2,$set3,$set4,$set5,$set6,$set7,$set8,$set9,$set10,$set11)=split(/,/, $ini[0]); $filedir="$set8/img/"; #タイトル・メタ情報ログファイルの読み込み open(IN,"$design/meta.dat"); @meta=; close(IN); ($set,$part,$subpt,$endpt,$m1,$m2,$m3,$m4,$m5,$m6,$m7,$m8,$m9,$m10,$m11,$m12,$m13,$m14,$m15,$m16,$m17,$m18,$m19,$m20,$m21,$m22,$m23,$m24,$m25,$m26,$m27,$m28,$m29,$m30,$m31,$m32,$m33,$m34,$m35,$m36,$m37,$m38,$m39,$m40)=split(/,/, $meta[0]); $m8 =~ s/
//g; if($m3){$keyword1="$m3,";} if($m4){$keyword2="$m4,";} if($m5){$keyword3="$m5,";} if($m6){$keyword4="$m6,";} if($m7){$keyword5="$m7,";} if($m8){$description="$m8";} #ページ基本設定ログファイルのデータ格納 open(IN,"$design/layout.dat"); @layout=; close(IN); ($set,$part,$subpt,$endpt,$l1,$l2,$l3,$l4,$l5,$l6,$l7,$l8,$l9,$l10,$l11,$l12,$l13,$l14,$l15,$l16,$l17,$l18,$l19,$l20,$l21,$l22,$l23,$l24,$l25,$l26,$l27,$l28,$l29,$l30,$l31,$l32,$l33,$l34,$l35,$l36,$l37,$l38,$l39,$l40)=split(/,/, $layout[0]); #HTMLライブラリ if($l1 eq "layout1"){require './layout1.pl';} if($l1 eq "layout2"){require './layout2.pl';} #サイト構成設定ログファイルのデータ格納 open(IN,"$design/const.dat"); @const=; close(IN); ($set,$part,$subpt,$endpt,$category0,$category1,$category2,$category3,$category4,$category5,$page10,$page11,$page12,$page13,$page14,$page15,$page20,$page21,$page22,$page23,$page24,$page25,$page30,$page31,$page32,$page33,$page34,$page35,$page40,$page41,$page42,$page43,$page44,$page45,$page50,$page51,$page52,$page53,$page54,$page55,$link0,$link1,$link2,$link3,$link4,$link5,$target0,$target1,$target2,$target3,$target4,$target5)= split(/,/, $const[0]); #カテゴリー名 $category[0]="$category0"; $category[1]="$category1"; $category[2]="$category2"; $category[3]="$category3"; $category[4]="$category4"; $category[5]="$category5"; #ページジ名 $page[0]="トップページ"; $page[1]="$page10,$page11,$page12,$page13,$page14,$page15"; $page[2]="$page20,$page21,$page22,$page23,$page24,$page25"; $page[3]="$page30,$page31,$page32,$page33,$page34,$page35"; $page[4]="$page40,$page41,$page42,$page43,$page44,$page45"; $page[5]="$page50,$page51,$page52,$page53,$page54,$page55"; #任意リンク $link[0]="$link0"; $link[1]="$link1"; $link[2]="$link2"; $link[3]="$link3"; $link[4]="$link4"; $link[5]="$link5"; open(IN,"$design/page_link.dat"); @page_link=; close(IN); ($set,$part,$subpt,$endpt,$p_lk10,$p_lk11,$p_lk12,$p_lk13,$p_lk14,$p_lk15,$p_tg10,$p_tg11,$p_tg12,$p_tg13,$p_tg14,$p_tg15,$p_lk20,$p_lk21,$p_lk22,$p_lk23,$p_lk24,$p_lk25,$p_tg20,$p_tg21,$p_tg22,$p_tg23,$p_tg24,$p_tg25,$p_lk30,$p_lk31,$p_lk32,$p_lk33,$p_lk34,$p_lk35,$p_tg30,$p_tg31,$p_tg32,$p_tg33,$p_tg34,$p_tg35,$p_lk40,$p_lk41,$p_lk42,$p_lk43,$p_lk44,$p_lk45,$p_tg40,$p_tg41,$p_tg42,$p_tg43,$p_tg44,$p_tg45,$p_lk50,$p_lk51,$p_lk52,$p_lk53,$p_lk54,$p_lk55,$p_tg50,$p_tg51,$p_tg52,$p_tg53,$p_tg54,$p_tg55,$date,$times)= split(/,/, $page_link[0]); #アクセス認証 open(IN,"$design/access.dat"); @access=; close(IN); ($set,$part,$subpt,$endpt,$acs10,$acs11,$acs12,$acs13,$acs14,$acs15,$acs20,$acs21,$acs22,$acs23,$acs24,$acs25,$acs30,$acs31,$acs32,$acs33,$acs34,$acs35,$acs40,$acs41,$acs42,$acs43,$acs44,$acs45,$acs50,$acs51,$acs52,$acs53,$acs54,$acs55)=split(/,/, $access[0]); #サブルーチン実行定義 &decode; if($in{'category'} eq ""){$in{'category'}="0";} if($in{'page'} eq "") {$in{'page'}="page0";} #ページログファイルの読み込み open(IN,"$design/$in{'page'}$in{'category'}.dat"); @pagedata=; close(IN); ($set,$part,$subpt,$endpt,$p1,$p2,$p3,$p4,$p5,$p6,$p7,$p8,$p9,$p10,$p11,$p12,$p13,$p14,$p15,$p16,$p17,$p18,$p19,$p20,$p21,$p22,$p23,$p24,$p25,$p26,$p27,$p28,$p29,$p30,$p31,$p32,$p33,$p34,$p35,$p36,$p37,$p38,$p39,$p40,$p41,$p42,$p43,$p44,$p45,$p46,$p47,$p48,$p49,$p50,$date,$times)=split(/,/, $pagedata[0]); if($mode eq 'page') {&page_html;} if($mode eq 'item_detail1'){&item_detail1;} if($mode eq 'item_detail2'){&item_detail2;} if($mode eq 'item_detail3'){&item_detail3;} if($mode eq 'sales_rule') {&sales_rule;} if($mode eq 'access_check'){&access_check;} if($mode eq 'cart_disp') {&cart_disp;} else {&page_html;} exit; #HTMLヘッダ----------------------------------------------------------------------------------------------------------------------- sub header{ print "Content-type: text/html\n\n"; print <<"EOM"; $m2 EOM } #HTMLヘッダ----------------------------------------------------------------------------------------------------------------------- sub header_shop{ if($in{'action'} eq "order_mail"){&item_delete;} else {&item_set;} print <<"EOM"; $m2 EOM } #アクセス認証チェック------------------------------------------------------------------------------------------------------------- sub access_check{ open(IN,"$comment/member.dat"); @access_check=; $flag=0; foreach $x (@access_check){ ($no,$set,$part,$subpt,$endpt,$id,$pass,$c3,$c4,$c5,$c6,$c7,$c8,$c9,$c10,$c11,$c12,$c13,$c14,$c15,$c16,$c17,$c18,$c19,$c20,$c21,$c22,$c23,$c24,$c25,$c26,$c27,$c28,$c29,$c30,$title,$stitle,$btitle,$ititle,$ctitle,$url,$wd,$img,$msg,$smsg,$bmsg,$imsg,$cmsg,$img1,$wimg1,$himg1,$pimg1,$img2,$wimg2,$himg2,$pimg2,$img3,$wimg3,$himg3,$pimg3,$img4,$wimg4,$himg4,$pimg4,$date,$time)=split(/,/, $x); if($id eq "$in{'user_id'}" && $pass eq "$in{'user_pass'}"){$flag=1;} } close(IN); if($mode eq "item_detail1" || $mode eq "item_detail2" || $mode eq "item_detail3"){ if($flag){ $check="OK"; if($mode eq "item_detail1"){&item_detail1;} if($mode eq "item_detail2"){&item_detail2;} if($mode eq "item_detail3"){&item_detail3;} } else{ $check="NG"; if($mode eq "item_detail1"){&item_detail1;} if($mode eq "item_detail2"){&item_detail2;} if($mode eq "item_detail3"){&item_detail3;} } } else{ if($flag){ &user_set; &header; if($in{'user'} eq "out"){print"";} else {print"";} } else{ &header; print""; } } exit; } #アクセス認証エラー--------------------------------------------------------------------------------------------------------------- sub access_error{ print <<"EOM";

認証エラー
認証できませんでした

EOM } #ユーザー情報の発行--------------------------------------------------------------------------------------------------------------- sub user_set{ #クッキーは国際時間をキーとし、保存日数は365日間 ($secg,$ming,$hourg,$mdayg,$mong,$yearg,$wdayg,$ydayg,$isdstg)=gmtime(time + 365*24*60*60); #曜日と週を配列で定義 @mong =('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'); @weekg=('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'); #365日後の国際時間を指定フォーマット化 $date_gmt=sprintf("%s, %02d\-%s\-%04d %02d\:%02d\:%02d GMT", $weekg[$wdayg],$mdayg,$mong[$mong],$yearg+1900,$hourg,$ming,$secg); #保存するクッキー情報を整列 if($in{'user'} eq "out"){$user="user_id\:\,user_pass\:\,save\:\,time\:\,";} else {$user="user_id\:$in{'user_id'}\,user_pass\:$in{'user_pass'}\,save\:$in{'save'}\,time\:$in{'time'}\,";} if($in{'save'} eq "save"){print "Set-Cookie: $set2=$user; expires=$date_gmt;\n";} else {print "Set-Cookie: $set2=$user;\n";} } #ユーザー情報の取得--------------------------------------------------------------------------------------------------------------- sub user_get{ #クッキー情報を取得 $cookie_user=$ENV{'HTTP_COOKIE'}; #取得したクッキー情報を分解 @pairs=split(/;/, $cookie_user); foreach $pair (@pairs){ local($name,$value)=split(/=/, $pair); $name=~ s/\s//g; $DUMMY{$name}=$value; } #クッキーIDを指定 @pairs=split(/,/, $DUMMY{$set2}); foreach $pair (@pairs){ local($name,$value)=split(/:/, $pair); $COOKIE_USER{$name}=$value; } #クッキーで得た名前、メール、URLを定義 $c_id =$COOKIE_USER{'user_id'}; $c_pass=$COOKIE_USER{'user_pass'}; $c_save=$COOKIE_USER{'save'}; $c_time=$COOKIE_USER{'time'}; } #商品情報の発行------------------------------------------------------------------------------------------------------------------- sub item_set{ if($in{'unit'} eq "0" || $in{'unit'}=~ /[^0-9]/){ print "Content-type: text/html\n"; print "\n"; } else{ $in{'item'}=~ s/<//g; $in{'item'}=~ s/"/\"/g; $in{'other1'}=~ s/<//g; $in{'other1'}=~ s/"/\"/g; $in{'other2'}=~ s/<//g; $in{'other2'}=~ s/"/\"/g; $in{'other3'}=~ s/<//g; $in{'other3'}=~ s/"/\"/g; $in{'unit_price'}=~ s/<//g; $in{'unit_price'}=~ s/"/\"/g; ($unit_price,$type)=split(/:/, $in{'unit_price'}); $order="$code<>$in{'item'}<>$in{'other1'}<>$in{'other2'}<>$in{'other3'}<>$in{'unit'}<>$unit_price<>$type"; $cookie_shop=$ENV{'HTTP_COOKIE'}; @pairs=split(/;/,$cookie_shop); foreach $pair (@pairs) { ($name, $value)=split(/=/, $pair); $name=~ s/\s//g; if($name=~m/^\d{10}$/ && $value ne ""){$COOKIE_SHOP{$name}=$value;} if($in{'unit'}>0) {$COOKIE_SHOP{$code}=$order;} } if($clear){ delete $COOKIE_SHOP{$clear}; $code=$clear; $order=""; } print "Content-type: text/html\n"; print "Set-Cookie: $code=$order; domain=$user_host; \n"; print "\n"; } } #商品情報のの削除----------------------------------------------------------------------------------------------------------------- sub item_delete{ $cookie_shop=$ENV{'HTTP_COOKIE'}; @pairs=split(/;/,$cookie_shop); print "Content-type: text/html\n"; foreach $pair (@pairs) { ($name, $value)=split(/=/, $pair); $name=~ s/\s//g; if($name=~m/^\d{10}$/ && $value ne ""){ $code=$name; $order=""; print "Set-Cookie: $code=$order;\n"; } } print "\n"; } #自動リンク----------------------------------------------------------------------------------------------------------------------- sub auto_link { $msg =~ s/([^=^\"]|^)(http\:[\w\.\~\-\/\?\&\=\@\;\#\:\%]+)/$1$2<\/a>/g; $p26 =~ s/([^=^\"]|^)(http\:[\w\.\~\-\/\?\&\=\@\;\#\:\%]+)/$1$2<\/a>/g; } #デコード処理 -------------------------------------------------------------------------------------------------------------------- sub decode{ #データ送信方法がPOSTの場合 if($ENV{'REQUEST_METHOD'} eq "POST"){ binmode(STDIN); read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } #データ送信方法がGETの場合 else{$buffer=$ENV{'QUERY_STRING'};} #送信内容がファイルの場合 if($ENV{'CONTENT_TYPE'}=~ /multipart\/form-data; boundary=(.*)/){&methodmulti;} #送信内容がファイルではない場合 else{ @pairs = split(/&/, $buffer); 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'h2z_sjis(*value); &jcode'convert(*value,'sjis'); #文字コード変換 &jcode'h2z_sjis(*value); &jcode'convert(*value,'sjis'); &jcode'convert(*name,'sjis'); #タグ処理 $value=~ s/\"/"/g; $value=~ s//>/g; #改行・カンマ処理 $value=~ s/\r\n/
/g; $value=~ s/\r/
/g; $value=~ s/\n/
/g; if($name =~ /^c_/){$name=~ s/^c_//; $color=$name;} if($name =~ /^f_/){$name=~ s/^f_//; $file=$name;} if($name =~ /^\_/){ if($value eq ""){$flag=1; $error_name=$name; last;} } $name=~ s/^\_//; $in{$name} .= $value; push(@formdata,$name); } } $mode=$in{'mode'}; $view=$in{'view'}; $code=$in{'code'}; $clear=$in{'clear'}; } #時間の取得 ---------------------------------------------------------------------------------------- sub get_time{ $ENV{'TZ'}="JST-9"; #タイムゾーンを日本時間へ $times=time; $times2=time+24*60*60; ($sec,$min,$hour,$mday,$mon,$year,$wday,$dmy,$dmy) = localtime($times); @week = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); #日時のフォーマット $date=sprintf("%04d\/%02d\/%02d(%s)", $year+1900,$mon+1,$mday,$week[$wday],$hour,$min); }