#!/usr/bin/env perl # http ヘッダの出力 print "Content-Type: text/html\n\n"; # ボードファイル名 $bfile ="board.dat"; &decode; $mes = $tags{'message'}; $name = $tags{'name'}; if ($mes) { $mes = &unspecial($mes); } if ($name) { $name = &unspecial($name); } else { $name = "名無し"; } # メッセージがあったら、名前と共にボードファイルに追加 if ($mes) { open(FH, ">>" . $bfile); print FH <<"END";
${name} さんの書き込み:
${mes}
END close(FH); } # HTMLファイルの先頭部分を出力 print "\n"; print "

Very simple Web board


\n"; # 間にボードファイルの内容を挟み込む open(FH, $bfile); while () { print $_; } close(FH); # HTMLファイルの末尾部分(フォーム含む)を出力 print <<"END";

お名前:
書き込み欄:

END #------------------------------------------------------------ # cgi.pl - decode CGI input. # by ETO Kouichirou # date 1994/05/11 # # Usage: # # &decode; # ... # $name = $tags{'name'}; sub decode { local($args, $n_read, *terms, $tag, $value); if ($ENV{'REQUEST_METHOD'} eq "POST"){ $n_read = sysread(STDIN, $args, $ENV{'CONTENT_LENGTH'}); } else { $args = $ENV{'QUERY_STRING'}; } @terms = split('&', $args); foreach (@terms) { ($tag, $value) = split(/=/, $_, 2); $otags{$tag} = $value; # original tags $tags{$tag} = &unpack($value); # tags is global } } sub unpack { local($value) = @_; $value =~ s/\+/ /g; $value =~ s/%(..)/pack("c", hex($1))/ge; return $value; } sub unspecial { local($value) = @_; $value =~ s/&/&/g; $value =~ s//>/g; return $value; }