掲示板の二重投稿禁止

[上に] [前に] [次に]
ト〜ルシエ 2000/02/08(火) 23:08:38
フリーで配布されている Perlスクリプトに、
改造として二重投稿を禁止させようと思っています。
二重投稿に関しては、他のスクリプトを参考にして
やってみたのですが上手くいきません。

sub regist {
  if ( $FORM{'action'} eq 'regist' ) {
### ここから追加
    foreach $line ( @RUSU ) {
      ($date,$name,$comment) = split(/,/,$line);
      if ( $name eq $FORM{'name'} && $comment eq $FORM{'comment'} ) {
        &error("二重投稿");
        last;
      }
    }
### ここまで追加
    if ( $FORM{'comment'} ne "" ) {
      if ( @RUSU >= $max ) { pop(@RUSU); }
      $value = "$chatdate\,$FORM{'name'}\,$FORM{'comment'}\n";
      unshift(@RUSU,$value);
      if ( !open(DATA,">$logfile") ) { &error("ログファイル"); }
      print DATA @RUSU;
      close(DATA);
    }
  }
}
と追加してみましたが、二重書き込み出来ます。
Perl初心者で改造しながら勉強してるのですが、
ご教授頂けると幸いです。

他の箇所のソースも必要でしょうか?
何か不備があれば、質問の仕方も合わせてご指摘下さい。

andi 2000/02/08(火) 23:41:43
$commentのケツに\n(改行コード)が入っているかもしれません。

foreach $line ( @RUSU ) {
  chomp($line);
  ($date,$name,$comment) = split(/,/,$line);
  if ( $name eq $FORM{'name'} && $comment eq $FORM{'comment'} ) {
    &error("二重投稿");
    last;
  }
}
を一度試してみて下さい。

ト〜ルシエ 2000/02/09(水) 01:34:38
[[解決]]
> chomp($line);

これでバッチリでした、ふむ、なるほど。
andiさん、ありがとうございました。

[上に] [前に] [次に]