0

HTML コンタクトフォームです。

<form class="form" method="post" action="mail.php">

     <label for="name">Name:</label>
     <input class="name" type="text" name="name" value="" placeholder="Full Name" required>

      <label for="email">Email:</label>
      <input class="email" type="text" name="email" value="" placeholder="Email" required>

      <label for="message">Message:</label>
      <textarea class="message" rows="4" cols="20" name="message" placeholder="Type..." required></textarea>

      <input type="submit" value="Send">

お問い合わせフォームに使用する Ajax です。

$('.form').submit(function() {
var name = $(".name").val();
var email = $(".email").val();
var message = $(".message").val();
var dataString = 'name=' + name + '&email=' + email + '&message=' + message;
$.ajax({
type : "POST",
url : "mail.php",
data : dataString,
cache : false,
success : function() {  
$(".form").hide();
$(".notice").fadeIn(400);
}
});
return false;
});

そして、それは私のmail.phpです(私はここで見つけました):

<?php
if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
    $email = $_POST['email'];
    $message = $_POST['message'];
    $formcontent="From: $name \n Message: $message";
    $recipient = "example@example.com";
    $subject = "Contact Form";
    $mailheader = "From: $email \r\n";
    mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");

} else {
    header("Location: your_form.html");
}

Ajax を使用してフォームに「無効な電子メール アドレス」メッセージを追加したいだけです (別のページではなく、フォームの横に表示するため)

現在のフォームでは、ユーザーが入力済みの有効な入力を送信する成功メッセージ ( .notice) が表示されますが、フォームを無効な電子メール アドレスで送信しても何も起こりません。

4

3 に答える 3

0

これには正規表現とfilter_varを使用する必要があります。ユーザーが Javascript を有効にしていない可能性があるため、JavascriptとPHP の両方で検証します。

メールの検証に通常使用する正規表現は次のとおりです。

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?

フォームが送信されたら、次のように実行します。

var email = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;
if(email.test($('.email').val()) === FALSE) {
    $('.notice').html('<strong>Invalid email address!</strong>').show();
    return false;
}

PHP で、POST リクエストが有効で、必要なすべてのフィールドがあるかどうかを確認したらfilter_var、パラメーターを使用して実行しFILTER_VALIDATE_EMAILます。filter_varブール値を返します。

if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE) {
    echo 'Invalid email address!';
    exit;
}
于 2013-09-15T08:59:20.527 に答える