掲示板開発の世界観です。
基本的に、
1.POSTで投稿されたデータを受け取る
2.ヘッダのHTMLを表示
3.受け取ったデータを記事一覧のデータファイルに記録
4.記事一覧のデータファイルを読み込んで記事のHTMLを表示
5.POSTで投稿するフォームのHTMLを表示
6.フッタのHTMLを表示
という風にスクリプトを書けば良い。
詳しくは以下が参考になる。
以下はインターネット上に公開されている掲示板スクリプトのサンプルです。
以下に簡単な掲示板のサンプルがあります。
上のページの掲示板では、投稿フォームの下に書き込みの処理(POSTが設定された時に実行される)と読み込みの処理があり、書き込み部分でファイルに出力したHTMLを読み込み部分でそのまま表示するようになっています。
以下に、PHPによる掲示板のサンプルがあります。
掲示板やチャットなど、CGIスクリプトによって動的なWebページを作る方法については、結城浩さんの以下の書籍が参考になる。
使われている言語であるPerl/CGI自体は旧来の技術だが、基本は今でも変わっていないため、教養として勉強になる。
2023.05.07
Perl/CGIで作られた掲示板などでは、SQLのデータベースサーバーを使わず、datファイルを使ってサーバー上にデータを保存することも多くあります。
datファイルの中に、掲示板で投稿されたメッセージなどのデータが格納されます。
datファイルはテキスト形式であるため、SQLサーバーよりも信頼性などは劣りますが、テキストを直接さまざまなツールで編集できるため、SQLサーバーのデータよりも扱いやすいというメリットがあります。
また、datファイルはサーバー上で公開されているため、このdatファイルを使って、昔の2ちゃんねるでは「2ちゃんねる専用ブラウザ」という、2ちゃんねるのためだけの専用の閲覧ソフトを作ることができました。
しかしながら、SQLサーバーのように、高度なクエリやテーブル、論理演算(選択・射影・結合)などの機能が使えるわけではないため、Facebookのような高度なSNSを運用するのであれば、SQLサーバーの利用は必須となるでしょう。
掲示板に限らず、ネットゲームなどでも、Perl/CGIで作られたブラウザゲームなどでは、データベースサーバーを使わず、シンプルなテキストファイルにデータを保存する場合もあります。この場合、Perlの機能(たとえば文字列の分割や結合)を使ってデータを読み書きします。
このように、意外とSQLサーバーを使わずにWebプログラミングを行う機会は多いです。なので、データベースだけを分かってWebプログラミングを分かったつもりにならないようにしましょう。
2ちゃんねるや2ちゃんねる専用ブラウザも参照のこと。
2023.08.19
以下はGoogleのAIが書いた、掲示板のサンプル。
#!/usr/bin/perl
use CGI;
use strict;
my $q = CGI->new;
my $file = 'bbs.txt';
# 投稿処理
if ($q->param('submit')) {
my $name = $q->param('name');
my $message = $q->param('message');
open(FH, ">>$file");
print FH "$name<>$message\n";
close(FH);
}
# HTML表示
print $q->header(-charset=>'UTF-8');
print "<html><body>";
print "<h1>掲示板</h1>";
print "<form method='post' action='bbs.cgi'>";
print "名前: <input type='text' name='name'><br>";
print "メッセージ: <input type='text' name='message'><br>";
print "<input type='submit' name='submit' value='投稿'>";
print "</form>";
# 過去の投稿を表示
if (open(FH, "<$file")) {
while (<FH>) {
my ($name, $message) = split(/<>/);
print "<p>$name: $message</p>";
}
close(FH);
}
print "</body></html>";
2026.02.05
Perl/CGIについては、PerlやPerl/CGIやCGIを参照のこと。
PHPについてはPHPを参照のこと。
ApacheについてはApacheを参照のこと。
SNS・ブログ・掲示板も参照のこと。