#!/usr/bin/perl ############################################################ $data_dir = "."; #data.txt ÆÄÀÏÀÌ Àִ°÷ÀÇ Àý´ë °æ·Î $photo_dir = "$data_dir/photo"; #»çÁø ÀúÀå À§Ä¡ Àý´ë°æ·Î $photo_url = "./photo"; #»çÁøÀÌ ÀúÀåµÇ´Â°÷URL $cgi_url = "./n.cgi"; #ÀÌ cgiÀÇ Url $img_url = "./img"; #¾ÆÀÌÄÜ ÀúÀå URL $max_data = "10000"; #ÃÖ´ë º¸°ü ±Û ¼ö $admin = "rockit"; #°ü¸®ÀÚ ºñ¹Ð¹øÈ£ °ü¸®ÀÚ°¡ ±Û»èÁ¦½Ã ÇÊ¿äÇÔ $AllowHTML = 1; #html ¹®¼­ ÀÔ·ÂÀ» Çã¿ëÇϸé 1 ¾ÈÇϸé 0 $max_lang = 10000; #ÀÚ±â¼Ò°³ ÃÖ´ë ±Û ¼ö $gate = "0"; #½ÃÀÛÈ­¸é ¹®À» ¿­·Á¸é open:0 close:1 ############################################################ &get_input; if(($FORM{'action'} eq "") && ($FORM{'page'} eq "")) { if($FORM{'page'} eq ""){ $FORM{'page'} = "1"; $page = 1; } if($gate eq "0"){ &display; } else{ ✓ } } elsif($FORM{'action'} eq "check") { if($FORM{'myname'}) { &check_name; } else { $err=check; &error; } } elsif($FORM{'action'} eq "addform") { &input; } elsif(($FORM{'action'} eq "write") || ($FORM{'action'} eq "modify_write")) { if(($FORM{'name'} eq "") || ($FORM{'comments'} eq "") || ($FORM{'sex'} eq "")|| ($FORM{'age'} eq "")|| ($FORM{'job'} eq "")|| ($FORM{'hobby'} eq "")|| ($FORM{'special'} eq "")) { &error; } elsif($FORM{'action'} eq "write") { &write; } else{ &modify_write; } } elsif($FORM{'action'} eq "modify"){ &modify; } elsif($FORM{'action'} eq "modifyok"){ if($FORM{'passwd'} eq "") { &error_pass; } else{ &modifyok; } } elsif($FORM{'action'} eq "erase") { &erase; } elsif($FORM{'action'} eq "eraseok") { if($FORM{'passwd'} eq "") { &error_pass; } &eraseok; } elsif($FORM{'action'} eq "search") { if($FORM{'keyword'}) { &search; }else{ $err = search; &error;} } elsif($FORM{'page'}) { &display; } ✓ ###################################################### sub get_input { if ($ENV{'QUERY_STRING'}) { @args = split(/&/, $ENV{'QUERY_STRING'}); foreach $pair (@args) { ($name, $value) = split(/=/, $pair); # Un-Webify plus signs and %-encoding $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s///g; if ($AllowHTML != 1) { $value =~ s/<([^>]|\n)*>//g; } $FORM{$name} = $value; } } else { $content_type = $ENV{'CONTENT_TYPE'}; $content_len = $ENV{'CONTENT_LENGTH'}; binmode STDIN; read(STDIN, $buffer, $content_len); if ((!$content_type) ||($content_type eq 'application/x-www-form-urlencoded')) { # Process the name=value argument pairs @args = split(/&/, $buffer); $data = ''; foreach $pair (@args) { ($name, $value) = split(/=/, $pair); # Unescape the argument value $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # Save the name=value pair for use below. $FORM{$name} = $value; } } elsif ($content_type =~ m#^multipart/form-data#) { # find boundary ($boundary = $content_type) =~ s/^.*boundary=(.*)$/\1/; @pairs = split(/--$boundary/, $buffer); @pairs = splice(@pairs,1,$#pairs-1); for $part (@pairs) { ($dump,$fline,$value) = split(/\r\n/,$part,3); if($fline =~ /filename/) { $real_file = $fline; } next if $fline =~ /filename=\"\"/; $fline =~ s/^Content-Disposition: form-data; //; (@columns) = split(/;\s+/, $fline); ($name = $columns[0]) =~ s/^name="([^"]+)"$/\1/g; if ($#columns > 0){ if ($value =~ /^Content-Type:/){ ($dump,$dump,$value) = split(/\r\n/,$value,3); } else{ ($dump,$value) = split(/\r\n/,$value,2); } } else { ($dump,$value) = split(/\r\n/,$value,2); if (grep(/^$name$/, keys(%CGI))) { if (@{$FORM{$name}} > 0) { push(@{$FORM{$name}}, $value); } else { $arrvalue = $FORM{$name}; undef $FORM{$name}; $FORM{$name}[0] = $arrvalue; push(@{$FORM{$name}}, $value); } } else{ next if $value =~ /^\s*$/; $FORM{$name} = $value; chop($FORM{$name}); chop($FORM{$name}); } next; } $FORM{$name} = $value; } } else{ print "Invalid content type!\n"; exit(1); } } } ########################################################### sub check { &head; open (DATA,"$data_dir/user.txt"); @numdata = ; $fildata = @numdata; close(DATA); &foot; } ########################################################## sub check_name { open (CHECK, "$data_dir/user.txt"); @myn = ; close (CHECK); $mys = @myn; for($w=0;$w<=$mys;$w++) { @nelist = split(/\|/,$myn[$w]); if($nelist[2] eq $FORM{'myname'}) { &display; } } print "Location: $cgi_url?action=addform\n\n"; } ########################################################## sub display { open(Num,"<$data_dir/data.txt"); $num = ; close(Num); open (DATA,"$data_dir/user.txt"); @num_data = ; $fil_data = @num_data; $stop = $fil_data-1; close(DATA); $file_num = $num; $tot_pg = int($fil_data/10); if(($tot_pg*10) < $fil_data) {$tot_pg = $tot_pg + 1; } &head; open(CONT, "$data_dir/connect.txt"); $con = ; close(CONT); chop($con); @huyn = split(/\|/, $con); if(($FORM{'page'} eq "") || ($FORM{'page'} ==1)) { if($tot_pg <= 1) { print ""; } else { print ""; } print "
\n"; if($stop >= 10) { $last = $stop-9; } else {$last = 0;} $start = $stop; &list; $page = 1; print "
\n"; } #¿©±â±îÁö 1ÆäÀÌÁö ¹Ì¸¸ÀÏ°æ¿ì if(($FORM{'page'} ne "") &&($FORM{'page'} !=1)) { $scount = (($FORM{'page'}-1)*10); $start = $stop-$scount; $last = $start-9; if($last <= 0) {$last = 0;} $pre_pg= $FORM{'page'} - 1; $next_pg = $FORM{'page'} + 1; if($next_pg <= $tot_pg) { print ""; } else { print ""; } print "
\n"; &list; } print "

"; &pagemove; &find; &foot; } ######################################################### sub list { for($p=$start;$p>=$last;$p -=1) { $file = $num_data[$p]; @Temp = split(/\|/,$file); if($Temp[7]) { $link = ""; } else { if(($Temp[13] eq "\n") || ($Temp[13] eq "http://\n") ||($Temp[13] eq "")){ if($Temp[3] ne "man"){ $link = ""; } else{ $link = ""; } }else{ $link = ""; } } if(($Temp[12] eq "\n") || ($Temp[12] eq "http://\n") ||($Temp[12] eq "")) { $Temp[12] = "»çÀÌÆ® ÁغñÁß"; } print <

À̸§: $Temp[2]

¼öÁ¤Çϱ⠻èÁ¦Çϱâ
 °ü·Ã»çÀÌÆ®: Áö±Ý¹æ¹®! ´ëÇ¥À̸ÞÀÏ(¿¬¶ôó): $Temp[6] ¾÷Á¾ºÐ·ù: $Temp[5]

$link

 À§Ä¡: $Temp[10] ÃⱸÁ¤º¸: $Temp[4]

 $Temp[11]

START } } ######################################################### sub head { print "Content-type: text/html\n\n"; print < ¢Æ Nsubway Index(ÇÑ´«¿¡ º¸±â) ÆäÀÌÁö ¢Æ
EOT } ########################################################### sub find { print ""; print ""; } ########################################################### sub foot { print "

Powered By Nsubway\n"; print "

\n"; exit; } ########################################################## sub input { &head; print <
À̸§
ÁÖ°í°´Ãþ¼ºº°³² ¿©
¾÷Á¾ºÐ·ù
ÃⱸÁ¤º¸
ÃⱸÁ¤º¸Link
À§Ä¡
´ëÇ¥ÀÚÀ̸ÞÀÏ
°ü·Ã»çÀÌÆ®
¾÷¼Ò»çÁø
»çÁø¸µÅ©
ºñ¹Ð¹øÈ£»èÁ¦½Ã ÇÊ¿ä
¾÷¼Ò¼Ò°³

START print "|µÚ·Î|\n"; &foot; } ######################################################### sub write { $FORM{'email'} =~ s/\s//g; $FORM{'comments'} =~ s/\cM//g; $FORM{'comments'} =~ s/\n/
/g; $lengh = length($FORM{'comments'}); if($lengh > $max_lang) { &error_too; } if($FORM{'photo'}) { &veryfy; if(-e "$photo_dir/$org_name") { $err = "exit"; &error; } else { &write_file; # $size = (-s "$photo_dir/$org_name"); # $size = int($size/1000); # $size = "$size k"; } } open(Num,"<$data_dir/data.txt"); $num = ; close(Num); open(Num,">$data_dir/data.txt"); $num = $num+1; print Num "$num\n"; close(Num); &getdate; if(-e "$data_dir/user.txt") { open(USER,">>$data_dir/user.txt"); } else { open(USER,">$data_dir/user.txt"); } my($pass) = crypt($FORM{'passwd'}, "sp"); print USER "$num\|$pass\|$FORM{'name'}\|$FORM{'sex'}\|$FORM{'job'}\|$FORM{'age'}\|$FORM{'email'}\|$org_name\|$date\|$FORM{'hobby'}\|$FORM{'special'}\|$FORM{'comments'}|$FORM{'homepage'}|$FORM{'photo_link'}\n"; close(USER); open(CONN, "$data_dir/connect.txt") ; $conn = ; close(CONN); @names = split(/\|/,$conn); $names[0] = $names[0]+1; if($FORM{'sex'} eq "man") { $names[1] = $names[1]+1; } else{ $names[3] = $names[3]+1; } $names[2] = int(($names[1]/$names[0])*100); $names[4] = int(($names[3]/$names[0])*100); if($FORM{'age'} < 20) { $names[5] = $names[5]+1; } elsif(($FORM{'age'} >= 20) && ($FORM{'age'} < 30)) { $names[7] = $names[7]+1; } elsif(($FORM{'age'} >= 30) && ($FORM{'age'} < 40)) { $names[9] = $names[9]+1; } else{ $names[11] = $names[11]+1; } $names[12] = int(($names[11]/$names[0])*100); $names[10] = int(($names[9]/$names[0])*100); $names[8] = int(($names[7]/$names[0])*100); $names[6] = int(($names[5]/$names[0])*100); open(NCNN, ">$data_dir/connect.txt"); print NCNN "$names[0]\|$names[1]\|$names[2]%\|$names[3]\|$names[4]%\|$names[5]\|$names[6]%\|$names[7]\|$names[8]%\|$names[9]\|$names[10]%\|$names[11]\|$names[12]%\n"; close(NCNN); &display; } ####################################################### sub modify_write { $FORM{'email'} =~ s/\s//g; $FORM{'comments'} =~ s/\cM//g; $FORM{'comments'} =~ s/\n/
/g; $lengh = length($FORM{'comments'}); if($lengh > $max_lang) { &error_too; } if($FORM{'photo'}) { &veryfy; if(-e "$photo_dir/$org_name") { $err = "exit"; &error; } else { &write_file; } } open(FILE,"<$data_dir/user.txt"); @file = ; close (FILE); $end = @file; open(NFILE,">$data_dir/user.txt"); for($q=0;$q<=$end;$q++) { $new = $file[$q]; @Temd = split(/\|/,$new); if($Temd[0] eq $FORM{'num'}) { if($FORM{'photo'} eq ""){ if($FORM{'photo_link'} ne ("\n" || "http://\n" || "" )){ if($Temd[7] ne ""){ unlink("$photo_dir/$Temd[7]"); } print NFILE "$FORM{'num'}|$FORM{'passwd'}|$FORM{'name'}|$FORM{'sex'}|$FORM{'job'}|$FORM{'age'}|$FORM{'email'}||$FORM{'date'}|$FORM{'hobby'}|$FORM{'special'}|$FORM{'comments'}|$FORM{'homepage'}|$FORM{'photo_link'}\n"; } else{ print NFILE "$FORM{'num'}|$FORM{'passwd'}|$FORM{'name'}|$FORM{'sex'}|$FORM{'job'}|$FORM{'age'}|$FORM{'email'}|$Temd[7]|$FORM{'date'}|$FORM{'hobby'}|$FORM{'special'}|$FORM{'comments'}|$FORM{'homepage'}|$FORM{'photo_link'}\n"; } } else{ unlink("$photo_dir/$Temd[7]"); print NFILE "$FORM{'num'}|$FORM{'passwd'}|$FORM{'name'}|$FORM{'sex'}|$FORM{'job'}|$FORM{'age'}|$FORM{'email'}|$org_name|$FORM{'date'}|$FORM{'hobby'}|$FORM{'special'}|$FORM{'comments'}|$FORM{'homepage'}|$FORM{'photo_link'}\n"; } } else { print NFILE $new; } } close(NFILE); &display; } sub getdate { ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); if ($sec < 10) { $sec = "0$sec"; } if ($min < 10) { $min = "0$min"; } if ($hour < 10) { $hour = "0$hour"; } if ($mday < 10) { $mday = "0$mday"; } if ($mon < 10) { $mon = "0$mon"; } $month = ($mon + 1); if ($month < 10) { $month = "0$month"; } if($year ne "99"){ if($year > 100){ $year=($year-100)+2000; } elsif($year < 10){ $year=2000+$year; } else{ $year="2000"; } } else{ $year="1999"; } $date = "$year³â $month¿ù $mdayÀÏ $hour½Ã$minºÐ"; } ######################################################### sub search { open (USE, "$data_dir/user.txt"); @use = ; close(USE); $last = @use; $o = 0; @num_data = (); for ($t=0;$t<=$last;$t++) { $find = $use[$t]; if($find =~ /$FORM{'keyword'}/i) { $num_data[$o] = $find; $o++; } } $stop = $o-1; $tot_pg = int($o/10); if(($tot_pg*10) < $o) {$tot_pg = $tot_pg + 1; } &head; if(($FORM{'page'} eq "") || ($FORM{'page'} ==1)) { print "°Ë»ö°á°ú $o °÷ ($FORM{'page'}/$tot_pg page)\n"; if($tot_pg <= 1) { print ""; } else { print ""; } print "
\n"; if($stop >= 10) { $last = $stop-9; } else { $last = 0; } $start = $stop; &list; $page = 1; print "
\n"; } if(($FORM{'page'} ne "") &&($FORM{'page'} !=1)) { $scount = (($FORM{'page'}-1)*10); $start = $stop-$scount; $last = $start-9; if($last <= 0) {$last = 0;} $pre_pg= $FORM{'page'} - 1; $next_pg = $FORM{'page'} + 1; print "°Ë»ö°á°ú $o °÷ ($FORM{'page'}/$tot_pg page)\n"; if($next_pg <= $tot_pg) { print ""; } else { print ""; } print "
\n"; &list; } print "

"; &pagemove; &find; &foot; } ######################################################### sub error { &head; print "

µî·Ï ¿¡·¯

\n"; print "
    \n"; if ($err eq "check" ) { print "
  1. À̸§À» ±â·ÏÇØ¾ß È®ÀÎÀÌ °¡´ÉÇÕ´Ï´Ù.\n"; } elsif($err eq "exit") { print "
  2. µ¿ÀÏÇÑ À̸§ÀÇ »çÁøÆÄÀÏÀÌ Á¸ÀçÇÕ´Ï´Ù.
  3. ÆÄÀÏ À̸§À» ¹Ù²Ù¾î¼­ ´Ù½Ã ÇϽʽÿÀ\n"; } elsif ($err eq "expt" ) { print "
  4. »çÁøÆÄÀÏÀº È®ÀåÀÚ°¡ gif³ª jpgÀ̾î¾ß ÇÕ´Ï´Ù.
  5. È®ÀåÀÚ°¡ ¸Â´Â ÆÄÀÏÀ» ´Ù½Ã ÁغñÇÏ¿© ÁֽʽÿÀ\n"; } elsif ($err eq "search" ) { print "
  6. ã°íÀÚÇÏ´Â °÷ÀÇ À̸§,ÃⱸÁ¤º¸,À§Ä¡,¾÷Á¾ºÐ·ù µîÀ» ±â·ÏÇÏ¿© ãÀ¸½Ê½Ã¿À.\n"; } else { print "
  7. »çÁø°ú ºñ¹Ð¹øÈ£¶õ ¿Ü¿¡´Â ¸ðµÎ ä¿ö¾ß ÇÕ´Ï´Ù.
  8. ºóÄ­À» ä¿îÈÄ ´Ù½Ã µî·ÏÇϼ¼¿ä.\n"; } print "
  9. µÚ·Î µ¹¾Æ°¡¼­ ´Ù½Ã ½Ãµµ ÇϽʽÿÀ.
\n"; print "´Ù½Ã ÀÛ¼º\n"; &foot; } ######################################################### sub error_too { &head; print "

µî·Ï ¿¡·¯

\n"; print "³»¿ëÀ» Á» $max_langÀÚ À̳»·Î ÁÙ¿© ÁֽʽÿÀ

\n"; print "µÚ·Î µ¹¾Æ°¡¼­ ´Ù½Ã ½Ãµµ ÇϽʽÿÀ.

\n"; print "´Ù½Ã ÀÛ¼º\n"; &foot; } ################## sub modify { &head; print <ÇöÁ¦ µ¥ÀÌŸ¸¦ ¼öÁ¤ÇÕ´Ï´Ù...

ºñ¹Ð¹øÈ£
START print "|µÚ·Î|\n"; &foot; } sub modifyok { if($FORM{'passwd'}) { open(FILE,"$data_dir/user.txt"); @file = ; close (FILE); $end = @file; open(NFILE,"$data_dir/user.txt"); for($q=0;$q<=$end;$q++) { $new = $file[$q]; @Temd = split(/\|/,$new); if($Temd[0] == $FORM{'num'}) { my($pass) = crypt($FORM{'passwd'}, "sp"); if(($FORM{'passwd'} eq $admin)||($pass eq $Temd[1])) { $Temd[11] =~ s/
/\n/g; &head; print < START if($Temd[3] eq "man"){ $sex_man = "checked"; } else{ $sex_woman = "checked"; } print <\n"; START if($Temd[13] ne ""){ print "\n"; } else{ print "\n"; } print <
À̸§
ÁÖ°í°´Ãþ¼ºº°³² ¿©
¾÷Á¾ºÐ·ù
ÃⱸÁ¤º¸
ÃⱸÁ¤º¸Link
À§Ä¡
´ëÇ¥ÀÚÀ̸ÞÀÏ
°ü·Ã»çÀÌÆ®
¾÷¼Ò»çÁø
»çÁø ¸µÅ©
»çÁø ¸µÅ©
¾÷¼Ò¼Ò°³

END print "|µÚ·Î|\n"; &foot; } else{ $err = "modify"; &error_pass; } } } } } sub erase { &head; print <°ü¸® ÆäÀÌÁöÀÔ´Ï´Ù.
ºñ¹Ð¹øÈ£
START print "|µÚ·Î|\n"; &foot; } ####################################################### sub eraseok { if($FORM{'passwd'}) { if($FORM{'passwd'} eq $admin) { $pass = ok; open(FILE,"<$data_dir/user.txt"); @file = ; close (FILE); $end = @file; open(NFILE,">$data_dir/user.txt"); for($q=0;$q<=$end;$q++) { $new = $file[$q]; @Temd = split(/\|/,$new); if($Temd[0] == $FORM{'num'}) { if($Temd[7]) {unlink("$photo_dir/$Temd[7]");} } else {print NFILE $new; } } close(NFILE); } else { open(FILE,"<$data_dir/user.txt"); @file = ; close (FILE); $end = @file; open(NFILE,">$data_dir/user.txt"); for($q=0;$q<=$end;$q++) { $new = $file[$q]; @Temd = split(/\|/,$new); my($pass) = crypt($FORM{'passwd'}, "sp"); if(($Temd[0] == $FORM{'num'})&&($pass eq $Temd[1])) { $disp_ok = "ok"; if($Temd[7]) { unlink("$photo_dir/$Temd[7]");} } else {print NFILE $new; } } close(NFILE); } } if($disp_ok eq ok) { &display; } else { &error_pass; } } ##################################################### sub error_pass { if($err eq "modify"){ $message = "¼öÁ¤"; } else{ $message = "»èÁ¦"; } &head; print "

ºñ¹Ð¹øÈ£ ¿¡·¯

\n"; print "µî·Ï »çÇ×À» $message ÇÏ·Á¸é µî·Ï ´ç½ÃÀÇ ºñ¹Ð¹øÈ£¸¦ ³ÖÀ¸½Ã¿À

\n"; print "µÚ·Î µ¹¾Æ°¡¼­ ´Ù½Ã ½Ãµµ ÇϽʽÿÀ.

\n"; print "°Ë»öÆäÀÌÁö\n"; &foot; } sub pagemove{ print "

"; $page=$FORM{'page'}; if($page eq ""){ $page = "1"; } $term = 10; $first = 1; $last = $term; while ($first <= $tot_pg) { if (($first <= $page) && ($page <= $last)) { $prevp = $first - 1; if ($prevp > 0) { if ($FORM{'action'} eq "search") { print "[ÀÌÀü]....."; } else{ print "[ÀÌÀü]....."; } } else { print "[ÀÌÀü]....."; } if ($last <= $tot_pg) { for ($pa = $first; $pa <= $last; $pa++) { if ($pa == $page) { print "[$pa] "; } else { if($FORM{'action'} eq "search") { print "[$pa] "; } else{ print "[$pa] "; } } } } else { for ($pa = $first; $pa <= $tot_pg; $pa++) { if ($pa == $page) { print "[$pa] "; } else { if($FORM{'action'} eq "search"){ print "[$pa] "; } else{ print "[$pa] "; } } } } $nextp = $last + 1; if ($nextp <= $tot_pg) { if($FORM{'action'} eq "search") { print ".....[´ÙÀ½]"; } else{ print ".....[´ÙÀ½]"; } } else { print ".....[´ÙÀ½]"; } } $first = $first + $term; $last = $last + $term; } print "
"; } ######################################################### sub veryfy { $upfile = $FORM{'photo'}; @a = split(/\"/,$real_file); @b = split(/\\/,$a[3]); $t = @b; $org_name = ($b[$t-1]); } ######################################################### sub write_file { $filename = "$photo_dir/".$org_name; ($t,$b) = split(/\./,$org_name); if(($b eq gif) || ($b eq jpg)) { open(FILE, ">$filename") || exit(1); binmode FILE; print FILE $upfile; close FILE; } else { $err = expt; &error; } } ################################################# exit(0);