プロが教えるわが家の防犯対策術!

PHPフォームのスパム対策についてなのですが
氏名のふりがなをひらがな入力でチェックをしたいのですが
下記記述でうまくいきません。PHPの初心者なのでご教授いただけますでしょうか?
( PHPの一部抜粋ですが //20090403 in の箇所を追記しました。)


////////////////
// メイン処理 //
////////////////
if ($method == 3) {
include($smtp_class);
}

@header("Content-Type: text/html; charset=EUC-JP");

if (isset($_POST['FORM'])) {

//フォームからのデータを評価

if ($_POST['FORM']['NAME'] == "") {
die('名前が入力されていません');
}

//20090403 in

if ($_POST['FORM']['FURIGANA'] == "") {
die('ふりがなを ひらがなで入力してください。');
}

if ($_POST['FORM']['EMAIL'] == "") {
die('Eメールが入力されていません');
}

if ($_POST['FORM']['MESSAGE'] == "") {
die('メッセージが入力されていません');
}

if (strlen($_POST['FORM']['MESSAGE']) > $max) {
die('文字数が多すぎます');
}

if ($_POST['FORM']['SUBJECT'] == "") {
$_POST['FORM']['SUBJECT'] = '(untitled)'; //タイトルなしの場合
}

//改行コードを<LF>に統一
$_POST['FORM']['MESSAGE'] = str_replace("\r\n", "\n", $_POST['FORM']['MESSAGE']);
$_POST['FORM']['MESSAGE'] = str_replace("\r", "\n", $_POST['FORM']['MESSAGE']);

//先頭と末尾のホワイトスペースを削除
$_POST['FORM']['MESSAGE'] = trim($_POST['FORM']['MESSAGE']);

//メッセージ部分のフォーマット
$_POST['FORM']['MESSAGE'] = "\n"
. "----------------------------------------------------------------------\n"
. $_POST['FORM']['MESSAGE']."\n"
. "----------------------------------------------------------------------\n";


//メール本文の作成
$body = ""; //初期化
while (list($item, $value) = each($_POST['FORM'])) {
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
$body .= sprintf("%-8s", $item)." : ".$value."\n";
}

//漢字コード変換( EUC → JIS )
if ($enable_EUCtoJIS) {
$body = EUCtoJIS($body);
$subject = '=?ISO-2022-JP?B?'.base64_encode(EUCtoJIS($_POST['FORM']['SUBJECT'])).'?=';
$from_name = '=?ISO-2022-JP?B?'.base64_encode(EUCtoJIS($_POST['FORM']['NAME'])).'?=';
$kana_name = '=?ISO-2022-JP?B?'.base64_encode(EUCtoJIS($_POST['FORM']['FURIGANA'])).'?=';
}

//20090403 in

if (!mb_ereg("^[ぁ-ん]+$", $_POST['FORM']['FURIGANA'])) {
$from = $kana_name." <".$_POST['FORM']['FURIGANA'].">";
}

if (ereg("^[0-9A-Za-z._-]+@[0-9A-Za-z.-]+$", $_POST['FORM']['EMAIL'])) {
$from = $from_name." <".$_POST['FORM']['EMAIL'].">";

} else {
$from = $from_name." <".$to.">";
}
 
 以下略 ------------

御多忙のところ恐縮ですがよろしくお願いいたします。

A 回答 (2件)

ひらがなは、「ぁ-ん」なので、



if(mb_ereg('^[ぁ-ん]+$', $hoge)) print ・・・・・←ふりがなはひらがな
else print・・・・ ←ふりがなは空欄かひらがなではない

とかではどうでしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございました。
悪戦苦闘していますが、もっと頑張ってみます。。。

お礼日時:2009/04/18 17:57

正規表現を使ってhitしなかったら無効って形にしたらどうだろう?


平仮名のリストを作成するのが(最初だけ)めんどくさいけどね
    • good
    • 0
この回答へのお礼

ありがとうございました。
悪戦苦闘していますが、もっと頑張ってみます。。。

お礼日時:2009/04/18 17:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!