名 前(ハンドル名)
 
メールアドレス
 
URLアドレス
 
コメントをどうぞ
 



【超シンプル掲示板】 (記入日時も表示)

【ソース】 board2.cgi 【解説】
  1. #!/usr/local/bin/perl
  2. #書き込まれた内容を保存するファイル名
  3. $datafile='data.html';
  4. print "Content-Type: text/html\n\n";
  5. #送られてくる文字列の長さ
  6. $length=$ENV{'CONTENT_LENGTH'};
  7. #長さ分だけ標準入力から読み込む
  8. read(STDIN, $buffer, $length);
  9. #文字列ごとに分割する
  10. ($shimei,$e_mail,$hp_ad,$kotoba)=split( /&/ , $buffer);
  11. #フォーム名と内容に分割する
  12. ($name,$value1)= split( /=/ , $shimei);
  13. ($tel,$value2)=split( /=/ , $e_mail);
  14. ($tel,$value3)=split( /=/ , $hp_ad);
  15. ($tel,$value4)=split( /=/ , $kotoba);
  16. #フォームから送られたデータにスペースがあると、
  17. #プラス(+)に置き換えられるので、
  18. #スペースにしたままにする変換処理をする
  19. $value1=~ tr/+/ /;
  20. $value2=~ tr/+/ /;
  21. $value3=~ tr/+/ /;
  22. $value4=~ tr/+/ /;
  23. #フォームから送られたデータの特殊文字や日本語などは
  24. # % に続く2桁の16進数に置き換えられるので、
  25. #それを変換しなおす処理をする
  26. $value1=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
  27. $value2=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
  28. $value3=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
  29. $value4=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
  30. #日時を表示するために、次の処理を加える
  31. # localtime関数を使い、秒、分、時、日、年、曜日に分解
  32. ($sec,$min,$hour,$mday,$mon,$year,$wday)=localtime(time);
  33. #月の値が0〜11になるので、+1して1〜12に補正する
  34. $mon++;
  35. #西暦を4桁表示にする(2000年対応)
  36. $yy=$year + 1900;
  37. #日本語の曜日を振り当てる
  38. @yobi=('日','月','火','水','木','金','土');
  39. #全体を表示させる記述
  40. $nowis="$yy年$mon月$mday日($yobi[$wday])$hour時$min分$sec秒\n";
  41. #データファイルを追加書き込みモードで開く
  42. open(FILE,">>$datafile");
  43. #新規に書き込まれた内容をファイルに追記する
  44. print FILE "<P><HR>氏名:$value1/メールアドレス<a
  45. href=\"mailto:$value2\">$value2</a>/ホームページ<a
  46. href=\"$value3\">$value3</a><BR>$nowis<BR><本文><BR>$value4\n";
  47. #ファイルを閉じる
  48. close(FILE);
  49. #追記された書き込みを全部表示する
  50. #データファイルを読み込み専用モードで開く
  51. open(FILE,"$datafile");
  52. #内容をブラウザに表示する
  53. print <FILE>;
  54. #ファイルを閉じる
  55. close(FILE);
  56. exit;
board2.cgi と time.cgi を組み合わせる

board2.cgi から新たに加えた箇所を
青文字で表示