どんとこい!PC情報

Perlで掲示板を作ってみよう!

 

書き込み処理

フローチャート(新しいウィンドウで開きます)
この図を見ながら読むと、多少はわかりやすいかと思います。

エラーチェック

ここでは投稿されたデータをLogファイルに書きこむという処理をします。
まず最初に、投稿されたデータに記入漏れが無いかチェックします。
具体的には、ここでもifを使ってデータが空っぽか何か入っているか調べます。
なにも入っていない場合は、@msgにエラーメッセージを入れて次へ進みます。
最後に@msgになにか入っていれば、エラーがあったとなるので後述のエラー処理を呼び出します。
その前に、プログラムは役割ごとにサブルーチン化したほうが解りやすいのでこの書き込み処理もサブルーチンにしてしまいましょう

sub datawrite {
		# エラーチェック
		if ($FORM{'text'} eq "") { push(@msg,"本文が入力されていません"); }
		if ($FORM{'name'} eq "") { push(@msg,"名前が入力されていません"); }
		if (@msg > 0) { &error; }
	}

このプログラムで$FORM{'text'}というのは、送信されてきた本文データの事で「text」の部分は自分で決めた変数の名前です。
nameというのは名前の事で、「name」の部分も同じように自分で決めた変数の名前です
pushという命令は、配列の最後に要素を追加する命令です。

データの追加

データを追加するために発言者の名前、メールアドレスホームページアドレス、本文などを一纏まりのデータにします。
このデータは改行コードまでが一つの纏まりで、データの境目には「<>」を置く事とします。
つまり
name<>mail<>home<>text<>\n
というようなデータ構成になります。
この「<>」という物は何でも良いのですが、後でデータを分割する時に境目以外にここで設定した記号が来るとうまく作動しなくなるので気をつけてください。
例えば、本文中に「(^<>^)」などと書かれていた場合、<>のところでデータが分割されてしまい、うまく表示できないようになってしまいます。
今回はデコードのところで「<」や「>」は変換されているので上の例では「(^&lt;&gt;^)」というようになっているので大丈夫です。
プログラム上では

	$data="$FORM{'name'}<>$FORM{'mail'}<>$FORM{'home'}<>$FORM{'text'}<>\n";

そして、Logファイルと呼ばれる今までの発言を記録してあるファイルを開いて、先ほどの$dataを追加します。
最後にファイルを閉じて終了です。

if (!open(ADDDATA, ">> $file")) {
		push(@msg,"ファイルの書き込みができませんでした。");
		&error;
	}
		print ADDDATA "$data\n";
	close(ADDDATA);

最初のIf文はLogファイルが開けなかった場合に、エラー処理を呼び出すという効果で使っています。
ここで、「$file」というのは最初の方で指定しておいたLogファイルの名前です。
openのところに書いてある「ADDDATA」はファイルハンドルと呼ばれるもので、これ以降のファイルの操作の名前として使います。
名前は適当にわかりやすいものをつけてください。

「$file」の前にある>> は、ファイルの最後に追加するモードで開きますということです。
>だけだと上書きモード、何も書かないと読み込みモードでファイルを開きます。
これらデータ追加部分をまとめて書くと、

	if ($FORM{'text'} eq "") { push(@msg,"本文が入力されていません"); }
	if ($FORM{'name'} eq "") { push(@msg,"名前が入力されていません"); }
	if (@msg > 0) { &error; }
	$data="$FORM{'name'}<>$FORM{'mail'}<>$FORM{'url'}<>$FORM{'text'}<>\n";
	if (!open(ADDDATA, ">> $file")) {
		push(@msg,"ファイルの書き込みができませんでした。");
		&error;
	}
		print ADDDATA "$data";
	close(ADDDATA);

コメントの投稿


画像の中に見える文字を入力してください。

トラックバックURL

http://www.isl.ne.jp/cgi-bin/mt/mt-tb.cgi/1240

サイト内検索

twitterTwitter

最新ブログ記事

2014年05月07日

BeagleBoardを使ってみる

BaegleBoardでLinuxをブートする

2011年10月12日

WindowsXPの見た目をWindows7風に変更

カレンダー表示をカスタマイズする

2011年09月14日

WindowsXPの見た目をWindows7風に変更

ウィンドウを半透明化する

2011年09月14日

WindowsXPの見た目をWindows7風に変更

Windows7風にカスタマイズ

2011年05月11日

WindowsXPの見た目をWindows7風に変更

使用ソフト概要説明

アクセスランキング

人気のコンテンツをご紹介!

1位

どんとこいPC情報

CD/DVDの仕組み CD編

3位

どんとこいPC情報

CD/DVDの仕組み DVD

4位

どんとこいPC情報

CD/DVDの仕組み DVD±R

ISL 情報戦略研究所

pagetopこのページの先頭へ戻る