2010年12月15日水曜日

[SA-5-1-3] Perlを用いたCGIを使ってWEBアプリ化

index.html(sample)
<HTML>
<HEAD>
 <META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=UTF-8">
 <TITLE>Connect MySQL(Perl) 1</TITLE>
</HEAD>

<BODY>
<FORM ACTION="cgi-bin/sample3.cgi" METHOD="POST" ENCTYPE="application/x-www-form-urlencoded">
 num:<INPUT TYPE="TEXT" NAME="num" SIZE="4"><BR>
 host_name:<INPUT TYPE="TEXT" NAME="host_name" SIZE="12"><BR> ip_address:<INPUT TYPE="TEXT" NAME="ip_address" SIZE="24"><BR>

 <SELECT NAME="command">
  <OPTION SELECTED VALUE="insert">INSERT</OPTION>
 </SELECT>

 <INPUT TYPE="SUBMIT" NAME="Submit" VALUE="実行"><BR>
</FORM>
</BODY>

</HTML>



connectDB3.cgi(sample)
#!/usr/bin/perl
use DBI;
$user = '[user name]';
$passwd = '[password]';
$db = DBI->connect('DBI:mysql:sa:localhost', $user, $passwd);

# FORMからデータを読み込む
$len = $ENV{'CONTENT_LENGTH'};
read(STDIN, $std, $len);
@args = split(/&/, $std);
foreach $arg ( @args ){
 ($name, $val ) = split(/=/, $arg);
 $val =~ s/\+/ /g;
 $form{$name} = $val;
}

print <<HEADER;
Content-type: text/html
<html>
 <head>
 <META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=UTF-8">
 <title>Connect MySQL(Perl) 2</title>
 </head>
 <body>
HEADER

if($form{command} eq 'insert'){
 if($form{name} eq '' ){
  print "<h1>nameが空白では登録できません</h1>";
 }else{
  $sth = $db->prepare("insert into list (num,host_name,ip_address) values ('$form{num}','$form{host_name}','$form{ip_address}')");
  $sth->execute;
  print "<h1>登録完了</h1>";
  $sth->finish;
 }
}

$db->disconnect;

print <<FOOTER;
</body>
</html>
FOOTER

WebサーバのCGI関連の設定確認
vi /etc/httpd/conf/httpd.conf
AddHandler cgi-script .cgi .pl

0 件のコメント: