FILTER_VALIDATE_EMAIL сообщает, что действительный адрес электронной почты недействителен

У меня проблема с проверкой правильности электронного письма. но странно то, что у меня одна и та же форма на разных страницах / URL-адресах, и в одной из форм постоянно говорится, что электронная почта недействительна, а в форме - действительна.

Форма на этой странице работает - http://night.sendme.to/about форма на этой странице не делает - http://night.sendme.to/book/jokeren

HTML в формах такой же

<form action="" method="post" id="myform">
        <div class="form-group">
            <label for="name">Navn *</label>
            <input type="text" class="form-control" id="name" name="name" placeholder="Navn" required="required">
        </div>
        <div class="form-group">
            <label for="corp">Virksomhed</label>
            <input type="text" class="form-control" id="corp" name="corp" placeholder="Virksomhed">
        </div>
        <div class="form-group">
            <label for="email">Email adresse *</label>
            <input type="email" class="form-control" id="email" name="email" placeholder="Email adresse" required="required">
        </div>
        <div class="form-group">
            <label for="tel">Telefon *</label>
            <input type="tel" class="form-control" id="tel" name="tel" placeholder="Telefon" required="required">
        </div>
        <div class="form-group">
            <label for="message">Kommentar</label>
            <textarea class="form-control" id="message" name="message" rows="10" required="required"></textarea>
        </div>
        <button type="submit" class="btn btn-default" id="submit">Send</button>
        </form>
        <div id="success" style="color:red;"></div>

PHP это

<?php   // Here we get all the information from the fields sent over by the form.
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];

$to = 'YOURMAIL';
$subject = 'the subject';
$message = 'FROM: '.$name.' Email: '.$email.'Message: '.$message;
$header  = "MIME-Version: 1.0" . "\r\n";
$header .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
$header .= "from:".$_POST['email'];

if (filter_var($email, FILTER_VALIDATE_EMAIL)) { // this line checks that we have a valid email address
    mail($to, $subject, $message, $header); //This method sends the mail.
    echo "Your email was sent!"; 
    echo var_dump(filter_var($email, FILTER_VALIDATE_EMAIL)); 
} else {
    echo "Invalid Email, please provide an correct email.";
    echo var_dump(filter_var($email, FILTER_VALIDATE_EMAIL)); 
}
?>

JavaScript это

$(document).ready(function(){
    $('#submit').click(function(){
        $.post("email.php", $("#myform").serialize(),  function(response) {
        $('#success').html(response);
        //$('#success').hide('slow');
        });
        return false;
    }); 
});

Надеюсь, кто-то может помочь, почему форма работает только на http://night.sendme.to/about и другие


person Rasmus Pedersen    schedule 30.03.2015    source источник
comment
какая используется ваша ВЕРСИЯ PHP   -  person Ghostman    schedule 30.03.2015
comment
Пожалуйста, проверьте отмеченный ответ по этой ссылке: - stackoverflow.com/questions/19220158/. Надеюсь, это поможет вам выяснить, почему возникает эта проблема.   -  person Anant Kumar Singh    schedule 30.03.2015
comment
И с каким именно адресом электронной почты у вас возникла проблема? (Возможно, проблема в кодировке символов, если ваши формы отправляются с другими…)   -  person CBroe    schedule 30.03.2015
comment
какой адрес электронной почты вы используете в качестве входных данных? и я просто хочу дважды проверить, что обе формы отправляют один и тот же php-код?   -  person Jeff Lambert    schedule 30.03.2015
comment
@watcher - [email protected]   -  person Rasmus Pedersen    schedule 30.03.2015
comment
@CBroe - я тестировал [email protected]   -  person Rasmus Pedersen    schedule 30.03.2015
comment
@RasmusPedersen stackoverflow.com/a/3722924/552116   -  person Ghostman    schedule 30.03.2015
comment
Пойдите и проверьте, что $email фактически содержится в вашем скрипте в обоих случаях: var_dump($email);   -  person CBroe    schedule 30.03.2015
comment
@CBroe он содержит Null только на страницах с ошибкой. Это, должно быть, проблема, теперь мне просто нужно выяснить, почему он не отправляет никаких данных.   -  person Rasmus Pedersen    schedule 30.03.2015
comment
Ваша форма имеет только идентификатор myform на первой странице, а на второй у нее вообще нет идентификатора ... поэтому, если вы используете тот же код JavaScript для отправки этой формы, $("#myform").serialize() не будет предоставлять никаких данных.   -  person CBroe    schedule 30.03.2015
comment
Чтобы быть более точным: я не видел идентификатора в инструментах отладки Chrome. В вашем HTML-коде у вас действительно есть <form action="" method="post" id="myform"> на обеих страницах, но на вашей второй странице у вас есть другой <form> тег прямо перед ним… и из-за этого недопустимого HTML браузер игнорирует второй тег формы.   -  person CBroe    schedule 30.03.2015
comment
@CBroe - СПАСИБО: D теперь работает   -  person Rasmus Pedersen    schedule 30.03.2015


Ответы (1)


Итак, чтобы не оставить этот вопрос без ответа:

В вашем HTML-коде у вас действительно было <form action="" method="post" id="myform"> на обеих страницах, но на вашей второй странице у вас был еще один тег <form> прямо перед ним ... и из-за этого недопустимого HTML браузер проигнорировал второй тег формы, и это заставило $("#myform").serialize() не возвращать никаких data вообще, потому что он не смог найти элемент формы с этим идентификатором.

Вы всегда должны проверять свой HTML-код. Это помогает избежать таких ошибок.

person CBroe    schedule 30.03.2015