2016-12-24 44 views
1

目前我有一个表单我正在努力,我正在努力,所以电子邮件不会发布,除非它被首先验证。我为它的名字工作,但每当我尝试做同样的电子邮件时,它说'无效的电子邮件格式',不写或发布。PHP电子邮件表单验证和写入文件

这就是我的工作:

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

'$ email'分配后节省$电子邮件变量的值?我猜你应该在'filter_var('< - 。 – chris85

+0

)使用'$ _POST [“email”]'是的,$ email被分配给$ name = $ email = $ gender = $ comment = $ website =“ “;在文档的开头,对不起,忘了包括它 –

+0

我的意思是它被分配到后来的输入值,例如'$ email = $ _POST [”email“];'? – chris85

回答

0

你检查验证,因此您的验证之前保存的任何变量或使用该

if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { 
    $emailErr = "Invalid email format"; 
} 
+0

非常感谢! !这样做有很大的意义,并且一旦我做到了这一点,我就开始工作了。非常感谢! –

+0

所以你可以接受答案,以便其他人可以得到帮助 –