1

スパムから保護され、登録者に簡単なメールを送信するフォームを作成しようとしています。

私はPHPにまったく慣れていません.私が直面している問題は、電子メールフィールドに誤った電子メールアドレスを指定してフォームを送信すると、電子メールが無効であることを示すエラーメッセージが表示されます.データベース。

ここにコードがあります

function spamcheck($field) {
    // filter_var() sanitizes the e-mail
    // address using FILTER_SANITIZE_EMAIL
    $field = filter_var($field, FILTER_SANITIZE_EMAIL);

    // filter_var() validates the e-mail
    // address using FILTER_VALIDATE_EMAIL
    if(filter_var($field, FILTER_VALIDATE_EMAIL)) {
        return TRUE;
    }
    else {
        return FALSE;
    }
}

if(isset($_REQUEST['email'])) {
    // if "email" is filled out, proceed
    // check if the email address is invalid
    $mailcheck = spamcheck($_REQUEST['email']);
    if ($mailcheck==FALSE) {
        die("<font color='red'>Your email address is invalid, please try again.</font><br/><br/><form><INPUT TYPE='button' VALUE='Back' onClick='history.go(-1);return true;'></form>");
    }
    else {//send email
        $to = "$email";
        $from = "name@mywebsite.com";
        $message = "Just a message";
        $subject = "Subject";

        mail($to, $message, $subject, "From: $from", "-f$from");
    }
}

どんな助けでも大歓迎です。

4

2 に答える 2

0

まず、Print Mailcheck で内容を確認します。

die('メールチェック: ' . $mailcheck);

何も設定されていない場合 ===

if($mailcheck === false){

}

于 2012-09-28T07:54:15.543 に答える
0

おそらくここでの問題は、チェック関数が最初に電子メールアドレスをサニタイズし、その後サニタイズされた電子メールを検証することです。つまり、チェック関数はサニタイズされた電子メールをチェックしますが、関数の外ではまだ無効な電子メールを処理しています。

したがって、チェック機能の外でサニタイズを行うか、私の意見では、サニタイズなしで入力のみを検証することをお勧めします (入力を修正しようとするよりも、入力が間違っていることをユーザーに認識させる方がよいでしょう)。

function checkEmail($input)
{
  return filter_var($input, FILTER_VALIDATE_EMAIL);
}

編集:

die(...Your email address is invalid...)コードが実行されるとページの処理が停止するため、実際には別の問題があるはずです。データベースに書き込むコードの部分を確認する必要があります。

于 2012-09-28T07:54:23.553 に答える