#! /usr/bin/perl # # wrjoin.pl # 6/15/08 : 1.05 : 削除を修正 # 1/27/07 : 1.04 : ファイルが倍々に増えていくバグを修正 # 1/11/07 : 1.03 : flockを追加 # 9/14/05 : 1.02 : jcode.plを削除 # 1/22/05 : 1.01 : 名前が未入力の時は登録しないように変更 # 10/21/02 : 1.0 : Initial Revision $joindir = "../joinlist"; $cgibin = "../cgi-bin"; $datafile = "$joindir/joinlist.dat"; $tmpfile = "$joindir/tmp.$$"; $eventhtml = "$joindir/event.shtml"; open(DAT,"< $datafile"); @allline=; close(DAT); ($finnum,@rest) = split(/,/,$allline[$#allline]); if ($ENV{"REQUEST_METHOD"} eq "GET"){ $data=$ENV{"QUERY_STRING"}; $method = 'GET'; } elsif ($ENV{"REQUEST_METHOD"} eq "POST"){ read(STDIN,$data,$ENV{"CONTENT_LENGTH"}); $method = 'POST' } @tmparry=split(/&/,$data); foreach $string (@tmparry){ ($key,$value)=split(/=/,$string); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s//>/g; $value =~ s/\r\n/
/g; $value =~ s/\n/
/g; $value =~ s/\r/
/g; $value =~ s/,/,/g; $all{"$key"}=$value; } if ($method eq 'POST'){ if ($all{name} ne ''){ open(WR,">> $datafile"); flock WR, 2; $num = $finnum + 1; print WR "$num,$all{name},,$all{comment}\n"; close(WR); } } else { open(DAT,"+< $datafile"); flock DAT, 2; while(){ s/[\r\n]*$//; ($num,$name,$join,$comment)=split(/,/); if ($num != $all{num}){ push @newdata, "$num,$name,$join,$comment\n"; } } truncate DAT, 0; seek DAT, 0, 0; print DAT @newdata; close(DAT); } print "Location: $eventhtml\n\n"; exit;