¾ÆÆÄÄ¡ ¼³Á¤
ÆÞÀÌ ¼³Ä¡ µÇ¾î ÀÖ³ª Çѹø º¾´Ï´Ù.
# 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;
}
|