¾ÆÆÄÄ¡ ¼³Á¤
ÆÞÀÌ ¼³Ä¡ µÇ¾î ÀÖ³ª Çѹø º¾´Ï´Ù.
# which perl
¾ÆÆÄÄ¡ ¼³Á¤µð·ºÅ丮 (/www/conf/httpd.conf)ÀÇ ´ÙÀ½ ³»¿ëÀÌ ¾øÀ¸¸é Ãß°¡¸¦ ÇÕ´Ï´Ù.
AddHandler cgi-script .cgi ScriptAlias /cgi-bin/ "/www/cgi-bin/" AllowOverride None Options None Order allow,deny Allow from all |
1) ÆÞ ¸ðµâ ¼³Ä¡
Perl `DBD'/`DBI' client code ´Â ÃֽŠ¾ÈÁ¤ ¹öÀüÀ» »ç¿ëÇÑ´Ù.
Perl °ü·ÃÇÁ·Î±×·¥ µÎ°¡Áö(¼¼°¡Áö)¸¦ ´Ù¿î·ÎµåÇÑ´Ù.
http://www.cpan.org/modules/01modules.index.html
Msql-Mysql-modules-1.2204.tar.gz
DBI-1.13.tar.gz
Data-Dump-0.03.tar.gz
('Data-Dumper'), 'DBI', 'Msql-Mysql-modules' À» ¼ø¼´ë·Î ¼³Ä¡ÇÑ´Ù.
2) ¿ì¼± ¾ÐÃàµÈ ÆÐÅ°Áö¸¦ Ǭ´Ù.
shell> tar xzvf DBI-VERSION.tar.gz shell> tar xzvf Msql-Mysql-modules-VERSION.tar.gz |
3) »ý¼ºµÈ µð·ºÅ丮·Î À̵¿
shell> cd DBI-VERSION |
4. ÄÄÆÄÀÏ ÇÏ°í ¼³Ä¡
shell> perl Makefile.PL shell> make shell> make test( Âü°í) shell> make install |
5) Å×½ºÆ®
Âü°í·Î make test. ¸ðµç ¸ðµâÀ» °ËÁõÇϱ⠶§¹®ÀÌ´Ù.
6) ³ª¸ÓÁöÁö µÎ°³ ÆÐÅ°Áö ¼³Ä¡
³ª¸ÓÁö 'Msql-Mysql-modules'¸¦ À§¿Í °°Àº ¹æ¹ýÀ¸·Î ¼³Ä¡ÇÑ´Ù.
Å×½ºÆ®
1) /www/cgi-bin/datedisp.cgi ÀÌ ÈÀÏÀ» vi ·Î ÆíÁýÇÑ´Ù.
#! /usr/bin/perl print "Content-type: text/html"; $date = `date`; print ("Today is $date"); |
2) ±ÇÇÑÀ» ¹Ù²Ù¾î ÁØ´Ù.
chmod 755 datedisp.cgi |
3) /www/cgi-bin µð·ºÅ丮¿¡¼ ½ÇÇàÀ» Çغ»´Ù.
./datedisp.cgi or perl datedisp.cgi |
4) ºê¶ó¿ìÀú¿¡¼ ´ÙÀ½À» ½ÇÇàÇÕ´Ï´Ù.
http://localhost/cgi-bin/datedisp.cgi |
µð·ºÅ丮, ÈÀÏ ¸¸µé±â
#!/usr/bin/perl use Mysql; $dbh = Mysql->connect("","dbname","user","password"); print "Content-type: text/html"; mkdir('aaa/bbb' , 0777) or die print "µð·ºÅ丮¸¦ ¸¸µé¼ö ¾ø½À´Ï´Ù. ÀÌ¹Ì ¸¸µé¾î Á³½À´Ï´Ù.<br>"; print "¿À°ÔÀÌ ¿À°ÔÀÌ"; &printf_file("aaa/bbb/test.htm"); exit; sub print_file{ my ($filename) = @_; $imsi; $top="<div align=left><table border=0 cellpadding=5><tr><td valign=top><p align=left><font face=±¼¸² size=2>"; $bottom="</font></td></tr></table></div>"; $parse{content} =~ s//<br>/g; $imsi = $top; $imsi.= "¾È³çÇϼ¼¿ä. >(///)< µå¼¼¿ä."; $imsi.= $bottom; open(fh,">$filename"); print fh $imsi; close(fh); } |
Mysql ³»¿ë
mysql> select * from test; +------+--------+------+-------------+ | id | name | age | tel | +------+--------+------+-------------+ | 1 | ±è¿ëÀÏ | 29 | 02-825-xxxx | +------+--------+------+-------------+ 1 row in set (0.03 sec) |
¼Ò½º
#!/usr/bin/perl print "Content-type:text/html"; #À¥¿¡¼ htmlÀ» º¼¼ö ÀÖ°Ô ÇØÁØ´Ù. useMysql; #mysqlÀ» »ç¿ëÇÑ´Ù. $dbh=Mysql->connect("","kbc","",""); #db¿Í ÆÞÀ» ¿¬°áÇÑ´Ù. #½Ã°£ °ªÀ» ¾ò¾î ³½´Ù. ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time); #Ãâ·ÂÇÒ ÆûÀ» ÀÛ¼ºÇÑ´Ù. $date = sprintf("%d-%d-%d",$year += 1900, $mon+1, $mday); print $date, " "; #Ãâ·ÂÀ» ÇÑ´Ù. #print '$curdate()'; #°£´ÜÈ÷ ½Ã°£À» ³ªÅ¸³»´Â ¹æ¹ý $query_string = "select * from test"; # ÁúÀǸ¦ º¯¼ö¿¡ ÀúÀåÇÑ´Ù. $sth=$dbh->query($query_string); #º¯¼ö¸¦ ½ÇÇàÇÑ´Ù. print $sth->fetchrow_array, " "; # Ãâ·ÂÀ» ÇØÁØ´Ù. |
Sql À» ÀÛ¼ºÇÑ´Ù.
create table test ( no int default '0' not null auto_increment, name char(10), regdate date, PRIMARY KEY(no) ); |
name_input.htm À» ÀÛ¼ºÇÑ´Ù.
<form name="form" method="get" action="/cgi-bin/write_db.cgi"> <inputtype="text" name="name" size="10"> <input type="submit" name="ok" value="º¸³»±â"> </form> |
cgi ÈÀÏÀ» ÀÛ¼ºÇÑ´Ù.
#!/usr/bin/perl #À̹®¼´Â ÆÞ¹®¼ ÀÓÀ» ³ªÅ¸³»ÁØ´Ù. %parse = &parse_input; # form, inputÀ» °¡´ÉÇϵµ·Ï Á¤ÀǸ¦ ÇÑ´Ù. print "Content-type:text/html"; # htmlÀ» »ç¿ë°¡´ÉÇϵµ·Ï ÇÑ´Ù. print "ÀÔ·Â µÇ¾ú½À´Ï´Ù. <br>"; use Mysql; #Mysql À» Á¤ÀÇ ÇØÁØ´Ù. $dbh=Mysql->connect("","kedu","root",""); #MysqlÀ» ÆÞ¿¡¼ »ç¿ë°¡´ÉÇϵµ·Ï ¿¬°á ½ÃÄÑÁØ´Ù. connect("", "DBÀ̸§", "»ç¿ëÀÚ", "ºñ¹Ð¹øÈ£") $query_string = "insert into test values('','$parse{name}',curdate())"; # À̸§°ú ½Ã°£À» º¯¼ö¿¡ ÀúÀåÇÑ´Ù. $sth=$dbh->query($query_string); # ½ÇÇàÇÑ´Ù. $query_string = "select * from test"; # Å×ÀÌºí ³»¿ëÀ» º¯¼ö¿¡ ÀúÀåÇÑ´Ù. $sth=$dbh->query($query_string); # ½ÇÇàÀ» ÇÑ´Ù. while($row = $sth->fetchrow_arrayref) { # Å×À̺íÀÇ ¸¶Á÷¸· ·¹ÄÚµå ±îÁö print "$row->[0] $row->[1] $row->[2]<br>"; # Å×ÀÌºí ³»¿ëÀ» Ãâ·Â ÇÑ´Ù. } exit; # ºÐ ¹®¼(ÆÞ)ÀÇ ³¡ÀÓÀ» ³ªÅ¸³» ÁØ´Ù. ÀÌÇÏ ÇÔ¼ö¸¦ Á¤ÀÇ ÇÑ´Ù. # ¹ØÀÇ ÇÔ¼ö´Â ÃæºÐÇÑ ÇнÀÈÄ ¼öÁ¤ÇÏ°í, Ãʺ¸ÀÚ´Â ±×³É ±×·±°¡ º¸´Ù »ý°¢ÇÏ°í ³Ñ¾î°£´Ù. sub parse_input { my ($buffer,@parse,%parse,$key,$value); if($ENV{'REQUEST_METHOD'} eq "GET") { @parse = split(/&/,$ENV{'QUERY_STRING'}); } else { read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'}); @parse = split(/&/,$buffer); } foreach (@parse) { $_=~ tr/+/ /; $_ =~ s/%([dA-Fa-f][dA-Fa-f])/pack("C",hex($1))/eg; ($key,$value) = split(/=/,$_); $parse{$key} = $value; } return %parse; } |
Sql ÀÛ¼º ( mysql DBNAME < test.tbl )
create table test ( no int default '0' not null auto_increment, id char(10), name char(10), pw char(8), regdate date, regtime time, PRIMARY KEY(no) ); |
check_input.htm ÀÛ¼º
<html> <body> <table> <form name="form" method="post" action=/cgi-bin/access_db.cgi> <tr> <td>¾ÆÀ̵ð </td> <td><input name=id size=10> <br></td> </tr> <tr> <td>ÀÌ ¸§ </td> <td><input name=name size=10> <br></td></tr> <tr> <td>ºñ¹Ð¹øÈ£</td> <td><input name=pw size=10 type=password> <br></td></tr> <tr> <td>ºñ¹Ð¹øȣȮÀÎ</td> <td><input name=pw2 size=10 type=password> </td></tr></table> <input type="submit" value="º¸³»±â"> </form> </table> </body> </html> |
access_db.cgi ÀÛ¼º(ÀÛ¼ºÈÄ 755 access_db.cgi ¸¦ ½ÇÇàÇؼ ½ÇÇà¸ðµå·Î ¹Ù²Û´Ù.)
#!/usr/bin/perl %parse = &parse_input; use Mysql; $dbh = Mysql->connect("","kedu","root",""); print "Content-type:text/html"; if($parse{id} eq ""){ print "¾ÆÀ̵𸦠ÀÔ·ÂÇÏÁö ¾Ê¾Ò½À´Ï´Ù.<br>"; print "¾ÆÀ̵𸦠ÀÔ·Â ÇØÁÖ¼¼¿ä.<br>"; } elsif($parse{name} eq "" ){ print "À̸§À» ÀÔ·ÂÇÏÁö ¾Ê¾Ò½À´Ï´Ù.<br>"; print "À̸§À» ÀÔ·Â ÇØÁÖ¼¼¿ä.<br>"; } elsif($parse{pw} eq "" ){ print "ºñ¹Ð¹øÈ£¸¦ ÀÔ·ÂÇÏÁö ¾Ê¾Ò½À´Ï´Ù.<br>"; print "ºñ¹Ð¹øÈ£¸¦ ÀÔ·Â ÇØÁÖ¼¼¿ä.<br>"; } elsif($parse{pw2} eq "" ){ print "ºñ¹Ð¹øȣȮÀÎÀ» ÀÔ·ÂÇÏÁö ¾Ê¾Ò½À´Ï´Ù.<br>"; print "ºñ¹Ð¹øȣȮÀÎÀ»ÀÔ·Â ÇØÁÖ¼¼¿ä.<br>"; } elsif(($parse{id} =~ /^d/) || ($parse{name} =~ /^d/)) { print "ù¹ø° ±ÛÂ¥°¡ ¼ýÀÚ·Î µÇ¾î ÀÖ½À´Ï´Ù.<br>"; print "ù¹ø°±ÛÂ¥¸¦ ¹®ÀÚ·Î ¹Ù²Ù¾î ÁÖ¼¼¿ä.<br>"; } elsif(®istered_id($parse{id})) { print "ÀÌ¹Ì ÀÖ´Â ¾ÆÀ̵ð ÀÔ´Ï´Ù.<br>"; print "´Ù¸¥ ¾ÆÀ̵𸦠ÀÔ·Â ÇØÁÖ¼¼¿ä.<br>"; } elsif($parse{pw} ne $parse{pw2}) { print "ºñ¹Ð¹øÈ£°¡ °°Áö ¾Ê½À´Ï´Ù. <br>"; print "ºñ¹Ð¹øÈ£¸¦ ´Ù½Ã ÀÔ·Â ÇØÁÖ¼¼¿ä. <br>"; } else { print$parse{id}, "°¡ ÀÔ·Â µÇ¾ú½À´Ï´Ù.<br>"; $query_string = "insert into test values('','$parse{id}','$parse{name}','$parse{pw}', curdate(), curtime())"; my $sth=$dbh->query($query_string); } $query_string = "select * from test"; $sth=$dbh->query($query_string); while($row = $sth->fetchrow_arrayref) { print "$row->[0] $row->[1] $row->[2] $row->[3] $row->[4] $row->[5]<br>"; } exit; sub registered_id { my ($id) = @_; my ($query_string) = "select id from test where id = '$id'"; my ($sth) = $dbh->query($query_string); if($sth -> numrows eq "1") { return 1; } else { return 0; } } sub parse_input { my ($buffer,@parse,%parse,$key,$value); if($ENV{'REQUEST_METHOD'} eq "GET") { @parse = split(/&/,$ENV{'QUERY_STRING'}); } else { read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'}); @parse = split(/&/,$buffer); } foreach (@parse) { $_ =~ tr/+/ /; $_ =~ s/%([dA-Fa-f][dA-Fa-f])/pack("C",hex($1))/eg; ($key,$value) = split(/=/,$_); $parse{$key} = $value; } return %parse; } |