Free CGI Perl PHP Script Olive Design CGI

一言メッセージ掲示板 その2

上のスクリプトの掲示板に削除機能をつけてみました。

まず、ファイル名bbs02.cgiを作成し、下のソースを貼り付けてパーミションを755にします。 同じ階層に空のファイルlog.datを作成してパーミションを666にします。

サンプル

ソース bbs02.cgi

#!/usr/bin/perl
#このスクリプトの場所
$this = "./bbs02.cgi";

#ログファイルの場所
$logfile = "./log.dat";

&decode;

if ($mode eq 'regist'){ ®ist; }
elsif ($mode eq 'delete'){ &delete; }
&html;

#HTMLの表示
sub html{

print <<"HTML";
Content-type: text/html

<html><head><title>一言メッセージ</title></head>
<body>
<h3>一言メッセージを書いてください。</h3>
<form method="POST" action="$this">
<input type=hidden name=mode value="regist">
入力 =>
<input type=text name="comment">
<input type="submit" value="送信"></form>
HTML

#コメント部分の表示
  open(IN,"$logfile");
  @log = <IN>;
  close(IN);
  foreach  $in (@log){
    ($num,$comment) = split(/	/,$in);
    print "$num>  $comment<br>";
  }
print <<"END";
<form method="POST" action="$this">
<input type=hidden name=mode value=delete>
削除番号<input type=text name=no size=4>
<input type=submit value=削除></form>

</body></html>
END
exit;
}

sub decode{
  $method = $ENV{ 'REQUEST_METHOD' };
  if( $method eq 'GET' ) {
    $input = $ENV{ 'QUERY_STRING' };
  } 
  else {
    read( STDIN,$input,$ENV{ 'CONTENT_LENGTH' } );
  }
  @in = split(/&/,$input); 
  foreach  $_ (@in) {
   ($list, $value) = split(/=/,$_);
   $value =~ tr/+/ /;
   $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
   $form{$list} = $value;
  }
  $mode  = $form{'mode'};
  $comment  = $form{'comment'};
  $no = $form{'no'};
}

sub regist{
  open(IN,"$logfile");
  @log = <IN>;
  $no = $log[0] + 1 ;
  $newdata = "$no	$comment\n";
  close(IN);
  open(OUT,">$logfile");
  unshift (@log,"$newdata");
  #ログ保存数を設定($# は変数のインデックスの最大値を求める記述)
  $data_max = 10;
  if ($#log > ($data_max -1)){ $#log = $data_max -1;}
  print OUT @log;
  close(OUT);
}

sub delete{
  open(IN,"$logfile");
  foreach  (<IN>) {
   ($no,$comment) = split(/	/);
   #削除ナンバーでなければ、保存
     if (!($form{'no'} == $no)){ push(@log,$_); }
   }
  close(IN);
  open(OUT,">$logfile");
  print OUT @log;
  close(OUT);
}
Perl PHP Free CGI Script OliveDesign CGI

Perl PHP Free CGI Script OliveDesign CGI

プライバシーポリシー / 特定商取引法に基づく表示