#!/usr/bin/perl ##################################################################### # # *** W a y - C A R T *** # Version 2.0 #-------------------------------------------------------------------- # Developed by Lim, Dae-Ho # http://way.co.kr # ##################################################################### # 1998/12/11-12/13 by lawwal Ver 1.0 # 1999/01/07 by lawwal Ver 1.2 # 1999/03/02-03/04 by lawwal Ver 1.5 # 1999/04/27 by lawwal Ver 1.6 (Plus WinNT/98/95) ##################################################################### # 1999/05/02-05/16 by lawwal Ver 2.0 (Plus Goods code, Credit card) # 1999/06/10 by lawwal Ver 2.0 Bug Fix ##################################################################### umask 000; &input_data; &set_data; &tmp_file_del; &cookieread; &check_cookie; &continue; if($Config{'j'} eq "p" || !$Config{'j'}) { &add; } if($Config{'j'} eq "m") { &edit; } if($Config{'j'} eq "r") { &reset; } if($Config{'j'} eq "o") { &pay; } if($Config{'j'} eq "e") { &process; } if($Config{'j'} eq "u") { &up_url; } if($Config{'j'} eq "v") { &view; } exit; ##################################################################### sub set_data { require "./conf-cart.cgi"; $CODE_S = $CODE; $NAME_S = $NAME; $QTT_S = $QTT; $AMOUNT_S = $AMOUNT; $TOT_S = $TOT; $TOTS_S = $TOTS; $FUNC_S = $FUNC; $CODE_S =~ s/ /  /g; $NAME_S =~ s/ /  /g; $QTT_S =~ s/ /  /g; $AMOUNT_S =~ s/ /  /g; $TOT_S =~ s/ /  /g; $TOTS_S =~ s/ /  /g; $FUNC_S =~ s/ /  /g; $real_time = &get_date("ymdhms", 0); $real_year = substr($real_time, 0,4); $real_m = substr($real_time, 5,2); $real_d = substr($real_time, 8,2); $cgi_name = $ENV{"SCRIPT_NAME"}; @cgi_name = split(/\/+/, $cgi_name); $cgi_name_index = $#cgi_name; $cgi_name = $cgi_name[$cgi_name_index]; $pdt_code = $Config{'code'}; $pdt_divi = $Config{'class'}; $pdt_qtt = $Config{'qtt'}; $pdt_add1 = $Config{'add1'}; $pdt_add2 = $Config{'add2'}; $pdt_add3 = $Config{'add3'}; $pdt_code =~ s/^ +| +$//g; $pdt_divi =~ s/^ +| +$//g; $pdt_qtt =~ s/^ +| +$//g; $pdt_add1 =~ s/^ +| +$//g; $pdt_add2 =~ s/^ +| +$//g; $pdt_add3 =~ s/^ +| +$//g; $pdt_f_am =~ s/^ +| +$//g; @tmp = (); foreach $tmp ($pdt_add1, $pdt_add2, $pdt_add3) { if($tmp) { push(@tmp, $tmp); } } if(@tmp) { $pdt_add = join(", ", @tmp); } foreach $prg_var (@Config_2) { if( ($prg_var ne "j") && ($prg_var ne "code") && ($prg_var ne "class") && ($prg_var ne "qtt") && ($prg_var ne "add1") && ($prg_var ne "add2") && ($prg_var ne "add3") && ($prg_var ne "method") && ($prg_var ne "line_cnt") && ($prg_var ne "check") && ($prg_var ne "x") && ($prg_var ne "y") ) { push(@Config_3, $prg_var); } } #-- foreach foreach $prg_var (@Config_2) { if($prg_var eq "E-mail") { $mail_var = "ok"; } } $remote_addr = $ENV{'REMOTE_ADDR'}; $http_user_agent = $ENV{'HTTP_USER_AGENT'}; $http_accept_language = $ENV{'HTTP_ACCEPT_LANGUAGE'}; } ##################################################################### sub up_url { print "Location: $up_url\n\n"; exit; } ##################################################################### sub add { if($pdt_qtt < 1) { $pdt_qtt = 1; } $tmp = $pdt_code; ($goods_category, $goods_code) = $tmp =~ /(.*)\-(.*)/; $FILE = "./code/.$goods_category.cgi"; open(FILE, "$FILE") || &error_file_open; while() { ($category, $code, $name, $amount, $keys, $url, $etc, $class) = split(/\|/, $_); if($code eq $goods_code) { $pdt_no = $pdt_code; $pdt_name = $name; $pdt_amt = $amount; if($pdt_divi) { foreach $tmp (split(/\:\:/, $class)) { ($class_name, $class_amount) = split(/ = /, $tmp); if($class_name eq $pdt_divi) { $pdt_class_amount = $class_amount; last; } } last; } } } close(FILE); if(!$pdt_name) { print "Content-type: text/html\n\n"; &short_msg("»óǰÄڵ尡 Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.", "»óǰÄڵ尡 Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù."); } if($pdt_class_amount) { $pdt_amt = $pdt_class_amount; } else { $pdt_divi = ""; } if($pdt_divi) { $pdt_name = "$pdt_name - $pdt_divi"; } if($pdt_add) { $pdt_name = "$pdt_name ($pdt_add)"; } $pdt_qtt =~ s/\D//g; $pdt_sum = $pdt_qtt * $pdt_amt; $insert_data = "$pdt_no|$pdt_name|$pdt_qtt|$pdt_amt|\n"; $pdt_qtt = &comma($pdt_qtt); $pdt_amt = &comma($pdt_amt); $pdt_sum = &comma($pdt_sum); $FILE = "$conodir/$cono"; open(FILE, ">>$FILE") || &error_file_open; print FILE $insert_data; close(FILE); $FILE = "$contdir/$cono"; open(FILE, ">$FILE") || &error_file_open; print FILE $ENV{'HTTP_REFERER'}; close(FILE); $FILE = "$conodir/$cono"; open(FILE, "$FILE") || &error_file_open; while ($tmp = ) { chomp $tmp; push(@arr_cart, $tmp); } close (FILE); $continue_url = $ENV{'HTTP_REFERER'}; if($add_table eq "Y") { &add_msg; } else { &view; } exit; } ##################################################################### sub add_msg { print "Content-type: text/html\n\n"; $html_table = "
\n"; $html_table .= " "; $html_table .= " "; #

&html_header("

    ¼±ÅÃÇϽŠ»óǰÀ» Àå¹Ù±¸´Ï¿¡ ³Ö¾ú½À´Ï´Ù.", "
          ¼±ÅÃÇϽŠ»óǰÀ» Àå¹Ù±¸´Ï¿¡ ³Ö¾ú½À´Ï´Ù.
"); print "
          ´ÙÀ½ »óǰÀ» Àå¹Ù±¸´Ï¿¡ ³Ö¾ú½À´Ï´Ù.

\n"; print $html_table; print "

$CODE_S $NAME_S $QTT_S $AMOUNT_S $TOT_S
$pdt_no $pdt_name $pdt_qtt $pdt_amt¿ø $pdt_sum¿ø
\n"; print "

\n"; print "

        \n"; print ""; print "\n"; print ""; print "
        \n"; print "\n"; print "¼îÇÎ °è¼ÓÇÏ±â  \n"; print "
        \n"; print "\n"; print "
\n"; &view_table; &view_html_insert; print "\n$html_table
\n"; &html_tail; exit; } ##################################################################### sub continue { $FILE = "$contdir/$cono"; if(-e $FILE) { open(FILE, "$FILE") || &error_file_open; $continue_url = ; close (FILE); } else { $continue_url = $up_url; } } ##################################################################### sub view { print "Content-type: text/html\n\n"; $FILE = "$conodir/$cono"; open(FILE, "$FILE") || &error_file_open; while ($tmp = ) { chomp $tmp; push(@arr_cart, $tmp); } close (FILE); if(@arr_cart) { &html_header("
    Àå¹Ù±¸´Ï¿¡ µé¾îÀÖ´Â »óǰ¸ñ·ÏÀÔ´Ï´Ù.", "
        Àå¹Ù±¸´Ï¿¡ µé¾îÀÖ´Â »óǰ¸ñ·ÏÀÔ´Ï´Ù.
"); print "
¼ö·®À» º¯°æÇϰųª Àå¹Ù±¸´Ï¿¡¼­ ²¨³»°í ½ÍÀº »óǰÀº ¿ìÃø ±â´É¹öư(¼ö·® ´Ã¸®±â, ¼ö·® ÁÙÀ̱â, Àå¹Ù±¸´Ï¿¡¼­ ²¨³»±â)À» ÀÌ¿ëÇϽñ⠹ٶø´Ï´Ù.

\n"; &view_table; print $html_table; print "
\n"; print "

        \n"; print ""; print "\n"; print ""; print "
        \n"; print "\n"; print "¼îÇÎ °è¼ÓÇÏ±â  \n"; print "
        \n"; print "\n"; print "
\n"; &html_tail; } else { &short_msg("Àå¹Ù±¸´Ï°¡ ºñ¾îÀÖ½À´Ï´Ù", "
          Àå¹Ù±¸´Ï°¡ ºñ¾îÀÖ½À´Ï´Ù
"); } exit; } ##################################################################### sub view_table { $html_table = "\n"; $html_table .= " "; $line_cnt =1; foreach $list(@arr_cart) { ($pdt_no, $pdt_name, $pdt_qtt, $pdt_amt) = split(/\|/, $list); $pdt_sum = $pdt_qtt * $pdt_amt; $pdt_sum_tmp = $pdt_sum; $pdt_qtt = &comma($pdt_qtt); $pdt_amt = &comma($pdt_amt); $pdt_sum = &comma($pdt_sum); $tot_sum = $tot_sum + $pdt_sum_tmp; $html_table .= " "; $html_table .= "\n"; $line_cnt++; } $tot_sum=&comma($tot_sum); $html_table .= " "; $html_table .= "
$CODE_S $NAME_S $QTT_S $AMOUNT_S $TOT_S $FUNC_S
$pdt_no $pdt_name $pdt_qtt $pdt_amt¿ø $pdt_sum¿ø\n"; $html_table .= "\n\n"; $html_table .= "\n"; $html_table .= "\n"; $html_table .= "\n"; $html_table .= "\n"; $html_table .= "\n"; $html_table .= "
 
 
\n"; $html_table .= "
$TOTS_S $tot_sum¿ø
\n"; } ##################################################################### sub view_html_insert { print <<"__END_OF_HTML__";

          Àå¹Ù±¸´Ï¿¡ µé¾îÀÖ´Â »óǰ¸ñ·ÏÀÔ´Ï´Ù.

¼ö·®À» º¯°æÇϰųª Àå¹Ù±¸´Ï¿¡¼­ ²¨³»°í ½ÍÀº »óǰÀº ¿ìÃø ±â´É¹öư(¼ö·® ´Ã¸®±â, ¼ö·® ÁÙÀ̱â, Àå¹Ù±¸´Ï¿¡¼­ ²¨³»±â)À» ÀÌ¿ëÇϽñ⠹ٶø´Ï´Ù.

__END_OF_HTML__ } ##################################################################### sub edit { $edit_meth = $Config{'method'}; $order_no = $Config{'line_cnt'}; $FILE = "$conodir/$cono"; open(FILE, "$FILE") || &error_file_open; while ($tmp = ) { $line_num ++; { if ($order_no eq $line_num) { &edit_run; } } $re_insert .= $tmp; } close (FILE); open(FILE, ">$FILE") || &error_file_open; print FILE $re_insert; close(FILE); &view; exit; } ##################################################################### sub edit_run { if($edit_meth eq "p") { ($pdt_no, $pdt_name, $pdt_qtt, $pdt_amt) = split(/\|/, $tmp); $pdt_qtt++; $tmp = "$pdt_no|$pdt_name|$pdt_qtt|$pdt_amt|\n"; } if($edit_meth eq "m") { ($pdt_no, $pdt_name, $pdt_qtt, $pdt_amt) = split(/\|/, $tmp); $pdt_qtt--; if($pdt_qtt ne 0) { $tmp = "$pdt_no|$pdt_name|$pdt_qtt|$pdt_amt|\n"; } else { $tmp = ""; } } if($edit_meth eq "d") { $tmp = ""; } } ##################################################################### sub pay { print "Content-type: text/html\n\n"; $FILE = "$conodir/$cono"; open(FILE, "$FILE") || &error_file_open; while ($tmp = ) { chomp $tmp; push(@arr_cart, $tmp); } close (FILE); if(@arr_cart) { &html_header("
    ÁÖ¹®¼­¸¦ ÀÛ¼ºÇØ Áֽñ⠹ٶø´Ï´Ù.", "
          ÁÖ¹®¼­¸¦ ÀÛ¼ºÇØ Áֽñ⠹ٶø´Ï´Ù.
"); print <<"__END_OF_HTML__";

          ´ÙÀ½Àº ±ÍÇÏÀÇ »óǰÁÖ¹®¼­ÀÔ´Ï´Ù.
          Á¤È®È÷ ÀÔ·ÂÇÏ¿©Áֽñ⠹ٶø´Ï´Ù.

__END_OF_HTML__ print "
\n"; print "\n\n"; $FILE = $order_file; open(FILE, "$FILE") || &error_file_open; while() { print $_; } print "\n\n"; print "\n
\n"; print "
        \n"; print ""; print "\n"; print ""; print "
        \n"; print "\n"; print "  \n"; print "\n"; print "¼îÇÎ °è¼ÓÇϱâ
\n"; print <<"__END_OF_HTML__";

__END_OF_HTML__ &view_table; &view_html_insert; print "\n$html_table
\n"; &html_tail; } else { &short_msg("Àå¹Ù±¸´Ï°¡ ºñ¾îÀÖ½À´Ï´Ù", "Àå¹Ù±¸´Ï°¡ ºñ¾îÀÖ½À´Ï´Ù"); } exit; } ##################################################################### sub reset { print "Content-type: text/html\n\n"; $FILE = "$conodir/$cono"; open(FILE, ">$FILE") || &error_file_open; print FILE ""; close(FILE); &short_msg("Àå¹Ù±¸´Ï¸¦ ºñ¿ü½À´Ï´Ù.", "

          Àå¹Ù±¸´Ï¸¦ ºñ¿ü½À´Ï´Ù.
"); exit; } ##################################################################### sub process { $FILE = "$conodir/$cono"; open(FILE, "$FILE") || &error_file_open; while ($tmp = ) { chomp $tmp; push(@arr_cart, $tmp); } close (FILE); if(@arr_cart) { &check_data; &data_gmr; if( ($order_mail ne "Y") && ($order_save ne "Y") ) { die print "Content-type: text/html\n\n

Error !

ÁÖ¹®Á¤º¸ÀúÀåÀ̳ª ÁÖ¹®¸ÞÀϼö½ÅÁß ÇѰ¡Áö ÀÌ»óÀ» ¼±ÅÃÇØ ÁֽʽÿÀ.

"; } &send_mail; if($order_save eq "Y") { &data_save; } # RESET............ if(-e "$conodir/$cono") { unlink("$conodir/$cono"); } if(-e "$contdir/$cono") { unlink("$contdir/$cono"); } print "Content-type: text/html\n"; print "Set-Cookie: cono=;\n"; print "Content-type: text/html\n\n"; &html_header("ÁÖ¹®¼­°¡ Á¢¼öµÇ¾ú½À´Ï´Ù.", "ÁÖ¹®¼­°¡ Á¢¼öµÇ¾ú½À´Ï´Ù."); print "\n\n"; $FILE = $thank_file; open(FILE, "$FILE") || &error_file_open; while() { print $_; } print "\n\n"; if($Config{'°áÁ¦¹æ¹ý'} eq "½Å¿ëÄ«µå") { $FILE = "$card_file"; open(FILE, "$FILE") || &error_file_open; while() { $card_form .= $_; } $card_form = &form_conv($card_form); print "\n\n"; print $card_form; print "\n\n"; print "


\n"; &html_tail; exit; } else { print "\n
\n"; print "


\n"; print "

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


      \n"; &html_tail; exit; } } else { &short_msg("Àå¹Ù±¸´Ï°¡ ºñ¾îÀÖ½À´Ï´Ù","Àå¹Ù±¸´Ï°¡ ºñ¾îÀÖ½À´Ï´Ù"); } exit; } ##################################################################### sub form_conv { local($data) = @_; $data =~ s/\:\:cono\:\:/$cono/g; $data =~ s/\:\:tot_amount\:\:/$tot_amount/g; $data =~ s/\:\:E-mail\:\:/$Config{'E-mail'}/g; return $data; } ##################################################################### sub data_gmr { $print_list = "¡á ÁÖ¹®ÀϽà : $real_time \n"; $print_list .= "\n"; $print_list .= "¡á ÁÖ¹®¹øÈ£ : $cono \n"; $print_list .= "\n"; $print_list .= "¡á ÁÖ¹®³»¿ë ------------------------------------------------------ \n"; $print_list .= " < $CODE $NAME $QTT $AMOUNT $TOT > \n"; foreach $list(@arr_cart) { ($pdt_no, $pdt_name, $pdt_qtt, $pdt_amt) = split(/\|/, $list); $pdt_sum = $pdt_qtt * $pdt_amt; # ´Ü°¡ * ±Ý¾× = °è $pdt_sum_tmp = $pdt_sum; $pdt_qtt = &comma($pdt_qtt); $pdt_amt = &comma($pdt_amt); $pdt_sum = &comma($pdt_sum); $tot_sum = $tot_sum + $pdt_sum_tmp; $print_list .= " $pdt_no $pdt_name $pdt_qtt $pdt_amt¿ø $pdt_sum¿ø \n"; } $tot_amount = $tot_sum; $tot_sum=&comma($tot_sum); $print_list .= " ---------- $TOTS ---------- $tot_sum ¿ø \n"; $print_lst2 = "¡áÁÖ¹®ÀÚ Á¤º¸ --------------------------------------------------- \n"; foreach $usr_field (@Config_3) { $print_lst2 .= " $usr_field : $Config{$usr_field} \n"; } if($buyer_env eq "Y") { $print_lst2 .= "¡áÁÖ¹®ÀÚ Á¢¼ÓÁ¤º¸ ----------------------------------------------- \n"; $print_lst2 .= " REMOTE_ADDR : $remote_addr \n"; $print_lst2 .= " HTTP_USER_AGENT : $http_user_agent \n"; $print_lst2 .= " HTTP_ACCEPT_LANGUAGE : $http_accept_language \n"; } } ##################################################################### sub send_mail { if($order_mail eq "Y") { $SEND_TO = $owner_mail; $SEND_FR = $owner_mail; $SEND_SU = "$owner_url ÁÖ¹®¼­"; $SEND_ME = "-" x 75 . "\n"; $SEND_ME .= $print_list; $SEND_ME .= $print_lst2; $SEND_ME .= "-" x 75 . "\n"; &sendmail_act; } if($buyer_mail eq "Y") { unless ($Config{'E-mail'} =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/ || $Config{'E-mail'} !~ /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/) { $SEND_TO = $Config{'E-mail'}; $SEND_FR = $owner_mail; $SEND_SU = "$owner_name, ÁÖ¹®Á¤º¸"; $SEND_ME = "-" x 75 . "\n"; $SEND_ME .= " »óǰÀ» ÁÖ¹®ÇØÁֽŠ°í°´²² Áø½ÉÀ¸·Î °¨»çµå¸³´Ï´Ù. \n"; $SEND_ME .= " ¸¸¾à °í°´²²¼­ ÁÖ¹®ÇϽŠ»óǰ¿¡ ´ëÇØ ±Ã±ÝÇÑ »çÇ×ÀÌ \n"; $SEND_ME .= " ÀÖÀ¸½Ã¸é ¸ÞÀÏ($owner_mail)·Î ¹®ÀÇÇϽðųª, \n"; $SEND_ME .= " ȨÆäÀÌÁö($owner_url)¸¦ ÀÌ¿ëÇØ Áֽñ⠹ٶø´Ï´Ù. \n"; $SEND_ME .= "\n"; $SEND_ME .= " ======= $owner_name / $owner_url ======= \n"; $SEND_ME .= "\n"; $SEND_ME .= $print_list; $SEND_ME .= "-" x 75 . "\n"; &sendmail_act; } } } ##################################################################### sub sendmail_act { if(-x $mailprogram) { open(MAIL,"|$mailprogram -t -f $owner_mail"); print MAIL "To: $SEND_TO \n"; print MAIL "From : $SEND_FR ($owner_mail) \n"; print MAIL "Subject : $SEND_SU \n\n";; print MAIL $SEND_ME; close (MAIL); } else { if(!$smtp_server) { $smtp_server = "127.0.0.1"; } &socket_mail($smtp_server, $owner_mail, $SEND_FR, "$owner_mail", $SEND_TO, $SEND_CC, "$SEND_SU", "$SEND_ME"); } } ##################################################################### sub data_save { if($file_ext eq "") { $file_ext = "cgi"; } # ÀÏÀÏÁ¤º¸ $FILE_1 = "$orderdir/$real_year$real_m$real_d.$file_ext"; # ÀüüÁ¤º¸ $FILE_2 = "$orderdir/total.$file_ext"; push(@file_du, $FILE_1); push(@file_du, $FILE_2); foreach $FILE(@file_du) { open(FILE, ">>$FILE") || &error_file_open; print FILE "=" x 75 . "\n"; print FILE $print_list; print FILE $print_lst2; print FILE "\n"; close (FILE); } } ##################################################################### sub cono_pid { ($Second, $Minute, $Hour, $DayOfMonth, $Month, $Year, $WeekDay, $DayOfYear, $IsDST)=localtime(time); $RealMonth = $Month + 1; if($RealMonth<10){$RealMonth="0$RealMonth";} if($DayOfMonth<10){$DayOfMonth="0$DayOfMonth";} if($Hour<10){$Hour="0$Hour";} if($Minute<10){$Minute="0$Minute";} if($Second<10){$Second="0$Second";} $Year_2 = $Year + 1900; $cono = "$Year_2$RealMonth$DayOfMonth$Hour$Minute$Second-$$"; } ##################################################################### sub cookieread { $buffer=$ENV{'HTTP_COOKIE'}; @strings = split(/; /,$buffer); foreach $strs (@strings) { ($name, $value) = split(/=/,$strs); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; $COOKIE{$name} = $value; } } sub cookieset { local($name) = $_[0]; local($value) = $_[1]; print "Content-type: text/html\n"; print "Set-Cookie: $name=$value;\n"; } ##################################################################### sub check_cookie { $cono = $COOKIE{'cono'}; if($cono eq "") { &cono_pid; &cookieset('cono', $cono); if(-e "$conodir/$cono") { unlink("$conodir/$cono"); } open(TOUCH, ">$conodir/$cono"); close(TOUCH); } if($cono ne "" && (!-e "$conodir/$cono") ) { open(TOUCH, ">$conodir/$cono"); close(TOUCH); } } ##################################################################### sub html_header { local($html_title, $page_title) = @_; # BODY Tag Á¶Á¤ if($bg_img eq "Y") { $base_dsgn_tag = "background=white "; } if($bgcolor) { $base_dsgn_tag .= "bgcolor=$bgcolor "; } if($text_color) { $base_dsgn_tag .= "text=$text_color"; } print <<"__END_OF_HTML__"; $html_title



        $page_title

          __END_OF_HTML__ } ##################################################################### sub html_tail { $FILE = $tail_file; print "\n\n"; open(FILE, "$FILE") || &error_file_open; while() { print $_; } print "\n\n"; print "

      \n\n\n"; exit; } ##################################################################### sub comma { local ($comma) = @_; local $dot = $comma; $comma =~ s/\..*$//g; $dot =~ s/^\d+//g; 1 while $comma =~ s/(\d+)(\d{3})/$1,$2/; return "$comma$dot"; } ##################################################################### sub short_msg { local($html_title_e, $page_title_e) = @_; &html_header($html_title_e, $page_title_e); print "\n"; print "

      \n"; print "
      "; print "
            \n"; print ""; print "\n"; print ""; print "
            \n"; print "\n"; print "¼îÇÎ °è¼ÓÇÏ±â  \n"; print "
            \n"; print "\n"; print "
      \n"; print "

      \n"; print "
      \n"; print "\n"; &html_tail; } ##################################################################### sub error_file_open { die print "Content-type: text/html\n\n

      Error !

      FILE OPEN ERROR. (FILE NAME : $FILE)

      "; } ##################################################################### sub input_data { if ($ENV{'REQUEST_METHOD'} eq 'GET') { @pairs = split(/&/, $ENV{'QUERY_STRING'}); } elsif ($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); @pairs = split(/&/, $buffer); } else { exit; } foreach $pair (@pairs) { local($name, $value) = split(/=/, $pair); $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s///g; push (@Config_2, $name); if (defined($Config{$name})) { $Config{$name} = $value; } else { if ($Config{$name} && $value) { $Config{$name} = "$Config{$name}, $value"; } elsif ($value) { push(@Config_Order,$name); $Config{$name} = $value; } } } } ##################################################################### sub get_date { local ($time_type, $add_date) = @_; my ($second, $minute, $hour, $date, $month, $year, $weekday, $yearmonth, $Isdst); my ($year_2, $time_data, @dayname, $ampm, $ampm_2); ($second, $minute, $hour, $date, $month, $year, $weekday, $yearmonth, $Isdst) = localtime(time); $year += 1900 if length $year <= 3; $year += 100 if $year <= 1970; $year_2 = $year; $year = substr($year, 2, 2); $month = $month + 1; @dayname = ('ÀÏ','¿ù','È­','¼ö','¸ñ','±Ý','Åä'); if($month < 10) { $month = "0$month"; } if($date < 10) { $date = "0$date"; } if($minute < 10) { $minute = "0$minute"; } if($second < 10) { $second = "0$second"; } if($hour > 11) { $hour_2 = $hour; $hour = $hour - 12; $ampm = "PM"; $ampm_2 = "¿ÀÈÄ"; } else { $hour_2 = $hour; $ampm = "AM"; $ampm_2 = "¿ÀÀü"; } if($hour < 10) { $hour = "0$hour";} if($hour_2 < 10) { $hour_2 = "0$hour_2";} if($time_type eq "datetime") { return "$year/$month/$date ($dayname[$weekday]) $ampm $hour:$minute:$second"; } # ex. 98/01/01 (¸ñ) AM 00:00:00 if($time_type eq "dateonly") { return "$year/$month/$date ($dayname[$weekday])"; } # ex. 98/01/01 (¸ñ) if($time_type eq "datetime4") { return "$year_2/$month/$date ($dayname[$weekday]) $ampm $hour:$minute:$second"; } # ex. 1998/01/01 (¸ñ) AM 00:00:00 if($time_type eq "dateonly4") { return "$year_2/$month/$date ($dayname[$weekday])"; } # ex. 1998/01/01 (¸ñ) if($time_type eq "ymd") { return "$year_2/$month/$date"; } # ex. 1998/01/01 if($time_type eq "ymdhms") { return "$year_2/$month/$date $hour_2:$minute:$second"; } # ex. 1998/01/01 13:12:12 } ##################################################################### sub input_error { foreach $missing_field (@err_2) { $missing_field_list .= "          - $missing_field
      \n"; } print "Content-type: text/html\n\n"; &html_header("ÀԷ³»¿ë¿¡ ¿À·ù°¡ ÀÖ½À´Ï´Ù.", "

              ÀԷ³»¿ë¿¡ ¿À·ù°¡ ÀÖ½À´Ï´Ù.
    "); print "
    \n"; print "
            ÀÔ·ÂÇϽг»¿ëÁß ´ÙÀ½°ú °°Àº Ç׸ñ¿¡ ¿À·ù°¡ ÀÖ½À´Ï´Ù.

            "; print "
            \n"; print $missing_field_list; print "
            \n"; print "


            \n"; print "

            \n"; print "¼îÇÎīƮ º¸±â
    \n"; print "

    \n"; print "
    \n"; &html_tail; exit; } ##################################################################### sub check_data { if(!$Config{'check'}) { return; } $check_len = "$Config{'check'}/°áÁ¦¹æ¹ý+100-1"; if($email_check eq "Y") { $check_email = "E-mail"; &check_email; } &check_len; if (@error_fields) { foreach $err (@error_fields) { $last_index = $#err_2; $last_index_tmp = 0; $err_3 = 0; if ($last_index ne -1) { while ($last_index >= $last_index_tmp) { if ($err_2[$last_index_tmp] eq $err) {$err_3 = 1; } $last_index_tmp ++; } } if ($err_3 ne 1) {push (@err_2, $err);} } if(@err_2) { &input_error ; } } } ##################################################################### sub check_len { @check_len = split(/\/+/, $check_len); $last_index = $#check_len; $last_index_tmp = 0; while ($last_index >= $last_index_tmp) { $check_len_2 = $check_len[$last_index_tmp]; ($ck_len_name, $ck_len_rg) = split(/\+/, $check_len_2); ($ck_len_rg_max, $ck_len_rg_min) = split(/\-/, $ck_len_rg); $cn = $Config{$ck_len_name}; unless ( ( length($cn) <= $ck_len_rg_max) && ( length($cn) >= $ck_len_rg_min) ) {push(@error_fields, $ck_len_name); } $last_index_tmp ++; } } ##################################################################### sub check_email { @check_email = split(/\/+/,$check_email); $last_index = $#check_email; $last_index_tmp = 0; while ($last_index >= $last_index_tmp) { if ($Config{$check_email[$last_index_tmp]} =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/ || $Config{$check_email[$last_index_tmp]} !~ /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/) {push(@error_fields, $check_email[$last_index_tmp]); } $last_index_tmp ++; } } ##################################################################### sub tmp_file_del { &file_select("./$conodir"); &file_select("./$contdir"); foreach $if_file(@file_list_rslt) { if ( (-C $if_file) > 1 ) { unlink("$if_file"); } } } ##################################################################### sub file_select { local ($DIR) = @_; opendir(DIR, $DIR); @file_list = grep {!(/^\./)} readdir(DIR); closedir(DIR); foreach $file_list(@file_list) { push(@file_list_rslt, "$DIR/$file_list"); } } ##################################################################### sub socket_mail { ################################ ## Socket Mail (1999/04/26) ################################ use Socket; local ($SERVER, $OWNER, $FROM, $FROM_N, $TO, $CC, $SUBJECT, $MESSAGE, $DIVI) = @_; local $PROTO = (getprotobyname('tcp'))[2]; local $PORT = (getservbyname('smtp', 'tcp'))[2]; local $SMTP = ($SERVER =~ /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/) ? pack ('C4',$1,$2,$3,$4) : (gethostbyname $SERVER)[4]; socket(SOCK, AF_INET, SOCK_STREAM, $PROTO) || return 0; connect(SOCK, pack('Sna4x8', AF_INET, $PORT, $SMTP)) || return 0; local ($OLD) = select(SOCK); $|=1; select($OLD); $SOCK = ; if($SOCK =~ /^[45]/) { close SOCK; return 0; } print SOCK "HELO $SERVER\r\n"; $SOCK = ; if($SOCK =~ /^[45]/) { close SOCK; return 0; } print SOCK "MAIL FROM: $OWNER\r\n"; $SOCK = ; if($SOCK =~ /^[45]/) { close SOCK; return 0; } print SOCK "RCPT TO: $TO\r\n"; $SOCK = ; if($SOCK =~ /^[45]/) { close SOCK; return 0; } if($CC) { print SOCK "RCPT TO: $CC\r\n"; $SOCK = ; if($SOCK =~ /^[45]/) { close SOCK; return 0; } } print SOCK "DATA\r\n"; $SOCK = ; if($SOCK =~ /^[45]/) { close SOCK; return 0; } if($DIVI eq "HTML") { print SOCK "Mime-Version: 1.0\r\nContent-Type: text/html\r\n"; } print SOCK "From: $FROM ($FROM_N)\r\n"; print SOCK "To: $TO\r\n"; print SOCK "Cc: $CC\r\n"; print SOCK "Subject: $SUBJECT\r\n\r\n"; print SOCK "$MESSAGE"; print SOCK "\r\n.\r\n"; $SOCK = ; if($SOCK =~ /^[45]/) { close SOCK; return 0; } print SOCK "QUIT\r\n"; close SOCK; return 1; } #####################################################################