<< 携帯電話向けHPに地図を表示 | main | Zend_Feed >>

2008.04.02 Wednesday

コメントフォーム

コメントフォームの作り方です。
ここでは、PearのHTML_QuickFormを使用した例を紹介します。

--

--

<?php

if(empty($comment_url)&&0==strlen($comment_url)){
	$comment_url = 'http://hostname.com' . getenv('SCRIPT_NAME');
}

require_once "HTML/QuickForm.php";

$form = new HTML_QuickForm('form_comment', 'post');

$form->addElement('header', 'comment_header', 'コメントをどうぞ');
$form->addElement('hidden', 'comment_url', $comment_url);
$form->addElement('text', 'comment_name', 'お名前', array('size' => 20, 'maxlength' => 30));
$form->addElement('text', 'comment_title', 'タイトル', array('size' => 20, 'maxlength' => 30));
$form->addElement('text', 'comment_mailto', 'E-mail', array('size' => 20, 'maxlength' => 30));
$form->addElement('textarea', 'comment_body', '本文', array('cols' => 50, 'rows' => 5));

$form->addElement('submit', 'btnSubmit', '送信');

$form->addRule("comment_name","名前は必須です","required", null, "client");
$form->addRule("comment_title","タイトルは必須です","required", null, "client");
$form->addRule("comment_body","本文は必須です","required", null, "client");

if ($form->validate()) {
	// フォームの検証が成功したら、処理する
	$form->freeze();
	$form->process('process_data', false);
	print "<a href=\"" . $comment_url . "\">呼び出し元のURLへ戻る</a>";
}
else{
	$form->display();
}

function process_data ($values) {
	echo "<pre>";
	foreach ($values as $key=>$value) {
		echo $key."=".$value."<br>\n";
	}
	echo "</pre>";
}

?>

こんな感じでしょうか。
別段難解な部分はないと思います。

サンプルなので、入力された値を表示しているだけですが、
実際には、process_dataで、
メッセージからタグを削除してデータファイルへの格納処理をしたり、
その内容を自分のメールアドレス宛に送信したり、
といったことをすればOKです。

なお、メッセージからタグを削除するには、
$comment_body = strip_tags($comment_body, '<br>');
って感じです。
許可したいタグがあれば、最後のパラメータには許可するタグを書けばOKです。
基本的にはすべてのタグを削除してしまった方が安全です。
ろくなことになりませんから。
詳しくは、PHPマニュアルのstrip_tagsを参照。

スパム防止用に画像認証入力などを追加してみるのもよいでしょう。
GDを使えば簡単に出来ますしね。

--

テクノラティお気に入りに追加する

Comments

コメント入力は停止しています

海外からと思われるコメントスパムが横行しているため、全記事のコメント入力を停止しています。メッセージのある方は、ホームページの一番下に連絡欄がありますので、そちらからお願いします。

Trackback URL

トラックバックする場合は、
トラックバック元の記事にこのエントリへのリンクを記載してください
このエントリのタイトル「コメントフォーム」
このエントリのリンク「http://kommy.s254.xrea.com/blog/log/eid67.html」