【发布时间】:2011-04-09 14:42:03
【问题描述】:
我刚刚构建了我的第一个带有验证功能的 PHP 联系表单,但无论如何它都在发送电子邮件。我肯定错过了什么。有人能看出来吗?
<?php if($_SESSION['instance'] == '1') {
$email = $_POST['ENQemail'];
$firstname = $_POST['ENQfirst_name'];
$lastname = $_POST['ENQlast_name'];
$message = $_POST['ENQmessage'];
$secword = $_POST['ENQsecword'];
if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {
$ERRemail = 'invalid email address';
}
if (strlen($firstname < 2)) {
$ERRfirstname = 'Please enter your first name';
}
if (strlen($lastname < 2)) {
$ERRlastname = 'Please enter your surname';
}
if (strlen($message < 50)) {
$ERRmessage = 'Your message must be at least 50 characters';
}
if ($secword == $_SESSION['instance']) {
$ERRsecword = 'Your security word did not match the image';
}
else {
$to = "enquire@divethegap.com";
$subject = "DTG Enquiry - ".$firstname." ".$lastname ;
$message = $message;
$headers = "From: ".$firstname." ".$lastname." ".$email. "\r\n" .
"Content-type: text/html" . "\r\n";
mail($to, $subject, $message, $headers);
}
}
?>
有什么想法吗?
【问题讨论】:
-
旁注:请注意,“^[^@]{1,64}@[^@]{1,255}$”不会验证每个有效的电子邮件地址。例如,某人的地址包含多个 @ 符号(在用户名部分中转义,如 \@)、域部分中的 ipv4 或 ipv6 地址、转义的特殊字符等。你不能用简单的一行来验证电子邮件,因为它的形式是非常复杂。查看this link 了解更多信息,并遵循本页提到的 RFC 标准。
标签: php forms validation