FILTER_VALIDATE_EMAIL 说有效的电子邮件无效
FILTER_VALIDATE_EMAIL saying a valid email is invalid
我在检查电子邮件是否有效时遇到问题。但奇怪的是,我在不同的 pages/urls 上使用了相同的表格,并且在其中一个表格上它一直说电子邮件无效,而在表格上它有效。
此页面上的表格有效 - 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 和其他
所以,为了不让这个问题无人回答:
在您的 HTML 代码中,您实际上在两个页面中都有 <form action="" method="post" id="myform">
– 但在您的第二页中,您在它之前有另一个 <form>
标签......并且由于这个无效HTML,浏览器忽略了第二个表单标签,这使得 $("#myform").serialize()
根本没有 return 任何数据,因为它找不到具有该 ID 的表单元素。
您应该始终 validate 您的 HTML 代码。这有助于避免此类错误。
我在检查电子邮件是否有效时遇到问题。但奇怪的是,我在不同的 pages/urls 上使用了相同的表格,并且在其中一个表格上它一直说电子邮件无效,而在表格上它有效。
此页面上的表格有效 - 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 和其他
所以,为了不让这个问题无人回答:
在您的 HTML 代码中,您实际上在两个页面中都有 <form action="" method="post" id="myform">
– 但在您的第二页中,您在它之前有另一个 <form>
标签......并且由于这个无效HTML,浏览器忽略了第二个表单标签,这使得 $("#myform").serialize()
根本没有 return 任何数据,因为它找不到具有该 ID 的表单元素。
您应该始终 validate 您的 HTML 代码。这有助于避免此类错误。