こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHPフォームのスパム対策

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.">";
}
 
 以下略 ------------

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

投稿日時 - 2009-04-04 00:08:48

QNo.4850774

困ってます

質問者が選んだベストアンサー

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

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

とかではどうでしょうか。

投稿日時 - 2009-04-04 07:58:38

お礼

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

投稿日時 - 2009-04-18 17:57:50

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

正規表現を使ってhitしなかったら無効って形にしたらどうだろう?
平仮名のリストを作成するのが(最初だけ)めんどくさいけどね

投稿日時 - 2009-04-04 00:25:41

お礼

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

投稿日時 - 2009-04-18 17:58:19

あなたにオススメの質問