おそらく「名前に禁止ワードが含まれています!」などのように改造したいのだと思いますが、最低限のPerlの知識はお持ちと踏まえてよろしいでしょうか?
本当でしたらサンプルコードをそのまま使ってもらえればよいのですが、当方Rubyが専門でPerlは動作環境がない上にほとんど覚えてないときたもんで、間違いもご愛敬ということでどうぞよろしく。
最初に619行目からのサブルーチンを確認してください。
ここでフォーム情報が連想配列in、配列keyにそれぞれ格納されていることが分かります。
なので255行目から始まる禁止ワードの捜査にこれらの情報を加えてやればいいのではないかと思います。
foreach文で配列keyの中身を順次確認していますので、一番簡単な手段は
"禁止ワードが含まれています" ⇒ "#{$in{$_}}に禁止ワードが含まれています"
のように何の工夫もなく文字列を連結してしまうことだと思いますが、名前と本文の二カ所に禁止ワードが含まれていた場合は最初に見つけた禁止ワードしか通達してくれません。
それが不満でしたらエラーを見つけ次第サブルーチンを呼び出すのではなく、配列などにエラーメッセージをストックしておいてから最後にまとめて出力すればいいんじゃないかでしょうか。方法はいろいろあると思いますが……
# 禁止ワード
if ($no_wd) {
local($err);
foreach (@key) {
foreach $nowd ( split(/,/, $no_wd) ) {
if (index($in{$_}, $nowd) >= 0) {
$err .= ", {$in{$_}}";
}
}
if (length($err) > 0) { &error("{$err}に禁止ワードが含まれています"); }
}
}
のように文字列として連結しちゃったり、
# 禁止ワード
if ($no_wd) {
local(@err);
foreach (@key) {
foreach $nowd ( split(/,/, $no_wd) ) {
if (index($in{$_}, $nowd) >= 0) {
push(@err, $in{$_});
}
}
if (@err > 0) { &error(join(@err, ", ") . "に禁止ワードが含まれています"); }
}
}
のように配列にストックしておけばいいんじゃないでしょうか。後者の方が応用が利くかしら?
なお上記ソースは全角スペースでインデントしていますのでタブ文字などに置換してください。
もし全然うまくいかないなんてことがありましたら改めてご連絡くださいまし。
自分の回答でウェブサイトが一層にぎわうようなら幸いです。
補足
何度もご丁寧に有難う御座います!! 頂きましたタグを入れてみたのですが 【禁止ワード,禁止ワードに禁止ワードが含まれています 】 と2回繰り返してしまいます。 入力された禁止ワードは1つなのですが、これは何か自分の 設置方法が悪かったのでしょうか? また可能であればなのですが、入力された項目名を表示させる事は できませんでしょうか? ------------------------------------------------------------ (例)お名前の入力欄に【禁止ワード】があった場合・・・ ERROR ! お名前に禁止ワードが含まれています。 ------------------------------------------------------------ また複数あった場合も対応出来れば良いのですが・・・ ------------------------------------------------------------ (例)お名前、住所、お問い合わせ内容の入力欄に【禁止ワード】があった場合・・・ ERROR ! お名前、住所、お問い合わせ内容に 禁止ワードが含まれています。 ------------------------------------------------------------ 何度も何度もご親切に対応して頂き大変お手数をお掛けし 申し訳ございませんが何卒ご指導の程宜しくお願い致します。