PHP电子邮件表单验证和写入文件

时间:2016-12-24 15:38:15

标签: php validation

目前我有一个我正在处理的表单,我正在尝试这样做,因此除非首先验证,否则电子邮件不会发布。我有它的名字工作,但每当我尝试用电子邮件做同样的事情时,它说'无效的电子邮件格式'并且不会写或发布。

这就是我的工作:

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变量。

如果您发现任何错误或我可以采取任何措施来解决这个问题,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

您在检查验证后在$ email变量中保存值,因此在验证之前将其保存在任何变量中或使用此

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