目前我有一个我正在处理的表单,我正在尝试这样做,因此除非首先验证,否则电子邮件不会发布。我有它的名字工作,但每当我尝试用电子邮件做同样的事情时,它说'无效的电子邮件格式'并且不会写或发布。
这就是我的工作:
if (empty($_POST["name"])) {
$nameErr = "Name is required";
} else {
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
$nameErr = "Please type a real name";
}else{
$name = test_input($_POST["name"]);
//Record to file
$myfile = fopen("names.txt", "a");
$txt = $name . " ". $_SERVER["REMOTE_ADDR"] . "\r\n";
fwrite($myfile, $txt);
fclose($myfile);
}
}
这是我无法工作的原因:
if (empty($_POST["email"])) {
$emailErr = "Email is required";
} else {
// check if e-mail address is well-formed
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}else{
$email = test_input($_POST["email"]);
}
}
每当我为电子邮件执行此操作时,都会导致"无效的电子邮件格式"即使我检查验证它是否正确,它也适用于if语句上面的$ email变量。
如果您发现任何错误或我可以采取任何措施来解决这个问题,我们将不胜感激。
答案 0 :(得分:0)
您在检查验证后在$ email变量中保存值,因此在验证之前将其保存在任何变量中或使用此
if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}